使用/ GL时如何定位和显示符号?

时间:2016-02-06 05:07:31

标签: visual-studio dumpbin

我们正在捕获链接器错误:

2>cryptlib.lib(x64dll.obj) : error LNK2001: unresolved external symbol "unsigned __int64 * CryptoPP::rdtable::Te" (?Te@rdtable@CryptoPP@@3PA_KA)
2>x64\Output\Debug\cryptest.exe : fatal error LNK1120: 1 unresolved externals

缺少的符号位于 rijndael.cpp 中,其用于 x64dll.asm < / strong>喜欢这样:

include ksamd64.inc
EXTERNDEF ?Te@rdtable@CryptoPP@@3PA_KA:FAR
EXTERNDEF ?g_cacheLineSize@CryptoPP@@3IA:FAR
EXTERNDEF ?SHA256_K@CryptoPP@@3QBIB:FAR
...

源文件使用 /GL 进行编译,因此我们无法使用 dumpbin /symbols rijndael.obj 上检查目标文件,看看这个配置发生了什么。另请参阅Dumpbin的/SYMBOL文档和Why is DumpBin telling me there are no COMDATs in my binaries...?

微软的文档告诉我们我们不能使用的内容,但它没有告诉我们在这种情况下应该使用什么。

使用 /GL 进行编译时,如何在目标文件中找到并显示符号?

1 个答案:

答案 0 :(得分:0)

如果运行LINK /LIB /LTCG /OUT:output.lib rijndael.obj,它应该生成一个包含实际编译代码的静态库。然后,您可以运行dumpbin /ALL output.lib来查看符号。 dumpbin /SYMBOLS output.lib 为我工作。

您可能需要调整LINK行以包含链接时通常会传递的其他标记。例如,/LIBPATH条目等。