Zit*_*rax 4 c++ windows static-libraries
当我运行时,lib /list mylib.lib我看到一些包含的 .obj 文件,但没有关于与此类似的功能的信息:
Path\file1.obj
Path\file2.obj
Path\file3.obj
Run Code Online (Sandbox Code Playgroud)
如果我将 .lib 文件作为存档打开,我可以看到1.txt, ..., n.txt除了目标文件之外还有许多文件。这些 txt 文件似乎包含有关 .obj 文件中函数的信息,格式如下:
:
Path\file1.obj ?function_name@...
:
Run Code Online (Sandbox Code Playgroud)
因此可以通过这种方式检索一些信息。
但是没有更好的方法来获取函数信息吗?例如使用lib.exe,dumpbin.exe或其他工具?也是一种更易读/破坏的格式吗?到目前为止,我没有运气找到。
这里有一个相关的问题,但它没有讨论如何处理 .lib 文件中包含的目标文件。
您需要使用dumpbin. (有关详细信息,请参阅msdn 上的 dumpbin。)
dumpbin /symbols /exports mylib.lib
Run Code Online (Sandbox Code Playgroud)
您也可以使用dumpbin后跟undname。(请参阅undname。)例如:
dumpbin /all /exports mylib.lib > mylib.txt
undname mylib.txt
Run Code Online (Sandbox Code Playgroud)
当然,您需要从 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
Run Code Online (Sandbox Code Playgroud)
程序菜单中提供了 Visual Studio 命令提示。但我只需打电话就可以得到一个
"%VS120COMNTOOLS%..\..\vc\vcvarsall" amd64
Run Code Online (Sandbox Code Playgroud)
GNUnm可以做你想做的事,只要你不使用/LTCG.
$ 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
[...]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6400 次 |
| 最近记录: |