静态库与Windows平台上的导入库

eagi6jfj  于 2023-05-08  发布在  Windows
关注(0)|答案(2)|浏览(230)

我怎么知道一个.lib文件是静态库还是DLL文件的导入库?有没有一个工具或命令可以做到这一点?
第二个问题是:如何检查静态库的依赖项?我的意思是,我怎么知道哪些DLL文件包含在这个静态库中?

weylhg0b

weylhg0b1#

导入库将向程序中添加DLL依赖项。如果没有DLL,程序将无法启动。(您可以使用Dependency Walker来获取程序所依赖的DLL的名称。
据我所知,静态库没有依赖项。它们被链接到程序中,只有链接器错误才会告诉您该特定库是否依赖于另一个库。(至少在GCC中;我不知道想要的是MS工具的行为。

5lhxktic

5lhxktic2#

只给出一个 * wtf.lib * 文件,问题是确定这个库文件是一个 * 静态库 * 还是一个 * 导入库 *。我目前的方法是(通过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是一个 * 导入库 *。另外,它是一个独立的 * 静态库 *。

相关问题