静态库v.s.在Windows平台上导入库

时间:2011-11-05 10:05:58

标签: windows visual-c++ static-libraries

我怎么能告诉一个.lib文件是静态库v.s. DLL的导入库?有没有可以做到这一点的工具或命令?

第二个问题是如何检查静态库的依赖关系,我的意思是我怎么知道这个静态库中包含哪些DLL?

感谢您的帮助。

致以最诚挚的问候,

2 个答案:

答案 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.libimport library。否则,它是独立的static library