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

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

有帮助吗?

解决方案

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

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

对于与C ++二进制接口链接的函数,调用约定和参数在函数的导出名称中编码(也称为<!> quot; name mangling <!> quot;)。 <=>将显示<!>“; mangled <!>”;函数名称以及解码的参数集。

其他提示

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

dumpbin /ARCHIVEMEMBERS openssl.x86.lib

lib /LIST openssl.x86.lib

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

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

LIB.EXE是VS的图书管理员

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

(就像Unix上的libtool)

<!> quot; dumpbin -exports <!> quot;适用于DLL,但有时可能不适用于lib。对于lib,我们可以使用<!> quot; dumpbin -linkermember <!> quot;或者只是<!> quot; dumpbin -linkermember:1 <!> quot;。

DUMPBIN / EXPORTS将获得大部分信息,其他人将获得MSDN。

获取一个Visual Studio包; C ++

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

2)输入以下命令:

dumpbin /EXPORTS my_lib_name.lib

就像在其他答案中可以看到的那样,您必须在您的Visual Studio版本中打开一个Developer Command Prompt,以便在您的执行路径中dumpbin.exe。否则,您可以手动设置必要的环境变量。

dumpbin /EXPORTS yourlibrary.lib通常会显示一小部分符号。在许多情况下,它不会显示库导出的功能。

dumpbin /SYMBOLS /EXPORTS yourlibrary.lib将显示符号,但也是一个令人难以置信的大量其他符号。因此,您必须过滤它们,可能使用管道findstr(如果您需要MS-Windows工具)或grep

使用其中一种工具搜索Static关键字似乎是一个很好的提示。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top