Why do some DLL files need an additional .lib file for linking?
dll, dynamic-linking, qt, shared-libraries, static-libraries
Solution
The lib file is an import library file, which allows the final executable to contain an import address table (IAT) by which all DLL function calls are referenced. Basically, allowing the functions to be looked up.
You can read about it here.
To have Qt generate the lib, add this to the .pro: -
CONFIG+= staticlib
Here's some documentation on how to create libraries.
Problem
I have a question about library linking and .lib files... this is the context: - OS = Windows - IDE = QT I have created a DLL: MyLib.dll. To use that library in my QT project, I only have to include an include path, a link to the library and use the header files: ``` LIBS += "C:\myPath\MyLib.dll" INCLUDEPATH += "C:\myPath" HEADERS += \ ../myPath/MyLib_global.h \ ../myPath/mylib.h ``` I am using a third party dll in my project: third.dll If I do the same as in the above example, it does not work: ``` LIBS += "C:\myPath\third.dll" ``` The third party DLL comes with a .lib file "third.lib", which I apparently need to use together with the DLL. Why is that? Why do some DLL libraries need a .lib file but other DLL libraries don't? Could it be that the .lib is a static library accessing the DLL? Thanks a lot!