如何查看Windows库的内容(* .lib)

时间:2008-11-20 13:25:10

标签: windows static-libraries libraries

我有一个二进制文件--Windows静态库(* .lib) 有没有一种简单的方法可以从该库中找出函数及其接口的名称?

类似于emfarelfdump实用程序(在Linux系统上)?

8 个答案:

答案 0 :(得分:175)

假设您正在讨论静态库,DUMPBIN /SYMBOLS显示库中的函数和数据对象。如果您正在谈论导入库(.lib用于引用从DLL导出的符号),那么您需要DUMPBIN /EXPORTS

请注意,对于与“C”二进制接口链接的函数,这仍然不会返回值,参数或调用约定。该信息根本不在.lib中编码;你必须提前知道(例如通过头文件中的原型)才能正确调用它们。

对于与C ++二进制接口链接的函数,调用约定和参数在函数的导出名称中编码(也称为“名称修改”)。 DUMPBIN /SYMBOLS将显示“受损”函数名称以及已解码的参数集。

答案 1 :(得分:76)

打开可视命令控制台(Visual Studio命令提示符)

dumpbin /ARCHIVEMEMBERS openssl.x86.lib

lib /LIST openssl.x86.lib

只需用7-zip :)打开它的AR档案

答案 2 :(得分:20)

我想在unix中使用像ar t libfile.a这样的工具 等效的窗口是lib.exe /list libfile.lib

答案 3 :(得分:13)

LIB.EXE是VS的图书管理员

http://msdn.microsoft.com/en-us/library/7ykb2k5f(VS.80).aspx

(就像Unix上的libtool)

答案 4 :(得分:13)

“dumpbin -exports”适用于dll,但有时可能不适用于lib。对于lib,我们可以使用“dumpbin -linkermember”或“dumpbin -linkermember:1”。

答案 5 :(得分:12)

DUMPBIN / EXPORTS将获得大部分信息并点击MSDN将获得其余信息。

获取一个Visual Studio包; C ++

答案 6 :(得分:3)

1)打开VS 2017的开发人员命令提示符(或您机器上的任何版本)(它应位于:开始菜单 - >所有程序 - > Visual Studio 2017(或任何版本的您)在你的机器上) - > Visual Studio工具   - > VS 2017开发人员命令提示符。

2)输入以下命令:

dumpbin /EXPORTS my_lib_name.lib

答案 7 :(得分:0)

就像在其他答案中可以看到的那样,您必须打开Visual Studio版本中提供的Developer Command Prompt,才能在执行路径中使用WITH RECURSIVE files_to_parent AS ( SELECT FileID, Name, ParentID, 1 AS recursion_depth FROM File WHERE FileID = file_id UNION ALL SELECT F.FileID, F.Name, F.ParentID, ftp.recursion_depth + 1 FROM files_to_parent ftp JOIN File F ON F.FileID = FTP.ParentID ) SELECT Name FROM files_to_parent ORDER BY recursion_depth DESC; 。否则,您可以手动设置必要的环境变量。

dumpbin.exe通常只会显示少量符号。在许多情况下,它不会显示库导出的功能。

dumpbin /EXPORTS yourlibrary.lib将显示该符号,但还会显示大量其他符号。因此,您必须使用到dumpbin /SYMBOLS /EXPORTS yourlibrary.lib(如果需要MS-Windows工具)或findstr的管道来过滤它们。

使用这些工具之一搜索grep关键字似乎是一个很好的提示。