Both the Microsoft C(++) compiler and Pelles C compiler will by default embed linker directives in object files: /defaultlib:name.lib is probably the most common. The actual library name can change depending on debug settings, multi-threading settings, and so on. This is to help produce a correct executable - maybe not so good to compile for multi-threading and link for single threading, for example.
If you want to override the default, you can either make sure the information is never written to object files (/Zl compiler option) or tell the linker to ignore the embedded /defaultlib info (/NODEFAULTLIB linker option).
(You can use PODUMP /directives name.obj (Pelles C) or DUMPBIN /directives name.obj (MSVC) to look at any embedded directives in an object file - a library file will work too, I think.)
Hope this made some sense...
Pelle