我怎么能告诉一个.lib文件是静态库v.s. DLL的导入库?有没有可以做到这一点的工具或命令?
第二个问题是如何检查静态库的依赖关系,我的意思是我怎么知道这个静态库中包含哪些DLL?
感谢您的帮助。
致以最诚挚的问候,
答案 0 :(得分:5)
导入库将为您的程序添加DLL依赖项。如果您没有DLL,您的程序将无法启动。 (您可以使用Dependency Walker来获取程序DLL的名称依赖)。
Afaik静态库没有依赖项。它们链接到程序中,只有链接器错误会告诉您该特定库是否依赖于另一个库。 (至少在GCC中,我不知道想要的是MS工具的行为。)
答案 1 :(得分:2)
仅给出一个wtf.lib
文件,问题是要确定该库文件是static library
还是import library
。我目前的操作方式是(通过DOS提示符和cygwin bash shell的组合)。
在DOS提示符下,需要正确运行dumpbin.exe:
dumpbin -all wtf.lib > wtf.lib.txt
然后,在cygwin shell中:
grep 'Archive member name' wtf.lib.txt
如果grep
的输出显示DLL文件名,则wtf.lib
是import library
。否则,它是独立的static library
。