当我运行lib /list mylib.lib
时,我看到一些包含的.obj文件,但没有关于与此类似的功能的信息:
Path\file1.obj
Path\file2.obj
Path\file3.obj
如果我作为archieve打开.lib文件,我可以看到除了目标文件之外还有许多文件1.txt, ..., n.txt
。这些txt文件似乎包含有关格式的.obj文件中的函数的信息:
:
Path\file1.obj ?function_name@...
:
因此,可以通过这种方式检索某些信息。
但是有没有更好的方法来获取功能信息?例如,使用lib.exe
,dumpbin.exe
或其他工具?还有一个更易读/解码的格式?到目前为止,我没有找到那个好运。
有一个相关问题here,但它没有讨论如何处理.lib文件中包含的目标文件。
答案 0 :(得分:4)
您需要使用dumpbin
。 (有关详细信息,请参阅dumpbin on msdn。)
dumpbin /symbols /exports mylib.lib
您还可以使用dumpbin
,然后使用undname
。 (参见undname。)例如:
dumpbin /all /exports mylib.lib > mylib.txt
undname mylib.txt
当然,您需要从命令提示符执行此操作,Visual Studio工具位于您的路径中。我的安装dumpbin和undname位于:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\amd64\dumpbin.EXE
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\amd64\undname.EXE
程序菜单中提供了Visual Studio命令提示符。但我只需拨打
即可获得一个"%VS120COMNTOOLS%..\..\vc\vcvarsall" amd64
答案 1 :(得分:1)
GNU nm
执行您想要的操作,只要您不使用/LTCG
进行编译,就应该使用MSVC对象。
$ nm ssleay32MT.lib
tmp32/tls_srp.obj:
[...]
00000000 R ??_C@_0BA@IKHGPLLJ@?4?2ssl?2tls_srp?4c?$AA@
U @__security_check_cookie@4
00e0797d a @comp.id
80000191 a @feat.00
U ___security_cookie
U __chkstk
U _BN_bin2bn
U _BN_bn2bin
U _BN_clear_free
U _BN_copy
U _BN_dup
U _BN_free
U _BN_num_bits
U _BN_ucmp
U _BUF_strdup
U _CRYPTO_free
U _CRYPTO_malloc
U _ERR_put_error
U _OPENSSL_cleanse
U _RAND_bytes
U _SRP_Calc_A
00000000 T _SRP_Calc_A_param
U _SRP_Calc_B
U _SRP_Calc_client_key
U _SRP_Calc_server_key
U _SRP_Calc_u
U _SRP_Calc_x
U _SRP_check_known_gN_param
U _SRP_create_verifier_BN
00000000 T _SRP_generate_client_master_secret
00000000 T _SRP_generate_server_master_secret
[...]