steglig steglig - 3 months ago 16
C++ Question

C++: What does #pragma comment(lib, "XXX") actually do with "XXX"?

My background is C# but I have to maintain some legacy (MS) C++. In that codebase I stumpled across:

#pragma comment(lib, "OtherLib700.lib")


where 700 is some versioning. Besides the lib is a DLL with the same name.

I first thought that the program would be dependant upon the DLL but after removing it from the system the program still works. There exists a newer version of the DLL, though, which is named OtherLib900...

It seems as though the program 'included' the code of the lib so that it's no longer dependant upon the external DLL. (Or that the program 'automatically' uses the newer DLL...)

Which one is correct? Is there are way to further confirm that 'assumption'?

Answer

If a program has this pragma it will look for the library OtherLib700.lib. If that is an import library when the program is loaded windows will search for OtherLib700.dll in the path. It will not try to look for OtherLib900.dll during execution so it must be finding your dll in a different folder. This assumes that OtherLib700.lib is an import library and not a static library. If OtherLib700 is a static library then that is all it needs.

Comments