我怎么知道一个.lib文件是静态库还是DLL文件的导入库?有没有一个工具或命令可以做到这一点?第二个问题是:如何检查静态库的依赖项?我的意思是,我怎么知道哪些DLL文件包含在这个静态库中?
weylhg0b1#
导入库将向程序中添加DLL依赖项。如果没有DLL,程序将无法启动。(您可以使用Dependency Walker来获取程序所依赖的DLL的名称。据我所知,静态库没有依赖项。它们被链接到程序中,只有链接器错误才会告诉您该特定库是否依赖于另一个库。(至少在GCC中;我不知道想要的是MS工具的行为。
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是一个 * 导入库 *。另外,它是一个独立的 * 静态库 *。
dumpbin -all wtf.lib > wtf.lib.txt
grep 'Archive member name' wtf.lib.txt
grep
wtf.lib
2条答案
按热度按时间weylhg0b1#
导入库将向程序中添加DLL依赖项。如果没有DLL,程序将无法启动。(您可以使用Dependency Walker来获取程序所依赖的DLL的名称。
据我所知,静态库没有依赖项。它们被链接到程序中,只有链接器错误才会告诉您该特定库是否依赖于另一个库。(至少在GCC中;我不知道想要的是MS工具的行为。
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
是一个 * 导入库 *。另外,它是一个独立的 * 静态库 *。