我有一个二进制文件 - Windows 静态库 (*.lib)。
有没有一种简单的方法可以从该库中找出函数的名称及其接口?
类似于emfar
和elfdump
实用程序的东西(在 Linux 系统上)?
我有一个二进制文件 - Windows 静态库 (*.lib)。
有没有一种简单的方法可以从该库中找出函数的名称及其接口?
类似于emfar
和elfdump
实用程序的东西(在 Linux 系统上)?
假设您在谈论静态库,DUMPBIN /SYMBOLS
则显示库中的函数和数据对象。如果您正在谈论导入库(.lib
用于引用从 DLL 导出的符号),那么您需要DUMPBIN /EXPORTS
.
请注意,对于与“C”二进制接口链接的函数,这仍然不会让您返回值、参数或调用约定。该信息根本没有编码.lib
。您必须提前知道(例如通过头文件中的原型)才能正确调用它们。
对于与 C++ 二进制接口链接的函数,调用约定和参数被编码在函数的导出名称中(也称为“名称修改”)。 DUMPBIN /SYMBOLS
将向您显示“损坏的”函数名称以及解码的参数集。
打开 Visual Studio 命令提示符
dumpbin /ARCHIVEMEMBERS openssl.x86.lib
或者
lib /LIST openssl.x86.lib
或者只是用 7-zip 打开它:) 它是一个 AR 存档
我想要一个像ar t libfile.a
unix一样的工具。
Windows 等价物是lib.exe /list libfile.lib
.
“dumpbin -exports”适用于 dll,但有时可能不适用于 lib。对于 lib,我们可以使用“dumpbin -linkermember”或仅使用“dumpbin -linkermember:1”。
LIB.EXE 是 VS 的图书管理员
http://msdn.microsoft.com/en-us/library/7ykb2k5f(VS.80).aspx
(如 Unix 上的 libtool)
DUMPBIN /EXPORTS 将获得大部分信息,点击 MSDN 将获得其余信息。
获取 Visual Studio 软件包之一;C++
1)打开VS 2017(或您机器上的任何版本)的开发人员命令提示符(它应该位于:开始菜单->所有程序-> Visual Studio 2017(或您机器上的任何版本) --> Visual Studio 工具 --> VS 2017 的开发人员命令提示符。
2) 输入以下命令:
dumpbin /EXPORTS my_lib_name.lib
就像在其他答案中可以看到的那样,您必须打开您的 Visual Studio 版本中提供的开发人员命令提示符才能dumpbin.exe
在您的执行路径中使用。否则,您可以手动设置必要的环境变量。
dumpbin /EXPORTS yourlibrary.lib
通常只会显示一小部分符号。在许多情况下,它不会显示库导出的函数。
dumpbin /SYMBOLS /EXPORTS yourlibrary.lib
将显示这些符号,但也会显示大量其他符号。因此,您必须过滤它们,可能使用管道findstr
(如果您想要 MS-Windows 工具)或grep
.
使用这些工具之一搜索Static
关键字似乎是一个很好的提示。