Static linking to lib and still requesting DLL

旧时模样 提交于 2019-12-19 21:46:52

问题


Using visual studio 2008, I have an .H and a .LIB file of a library. I wrote a program and referenced the LIB via the project properties. It compiles fine, but when it runs, it asks for the DLL to be installed. If the DLL is in the same dir as the EXE it works but, if I have the LIB, doesn't it already mean the functions are statically linked to my program?


回答1:


Not all lib files are static libraries. Some are import libraries, and chances are, that's what you linked with.

If your lib file is much smaller than its corresponding dll file, that's a sure sign that it's an import library.




回答2:


Letting your program use a DLL requires an import library. It is a file with the .lib extension, just like a static .lib. But it is very small, it only contains a list of the functions that are exported by the DLL. The linker needs this so it can embed the name of the DLL in the import table. You can see this for yourself by running Dumpbin.exe /imports on your .exe



来源:https://stackoverflow.com/questions/2240737/static-linking-to-lib-and-still-requesting-dll

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!