1

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

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如下:

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

源文件是用 编译的/GL,所以我们不能使用dumpbin /symbolsonrijndael.obj检查目标文件来查看这个配置发生了什么。另请参阅 Dumpbin 的/SYMBOL文档和为什么 DumpBin 告诉我我的二进制文件中没有 COMDAT...?.

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

编译时如何在目标文件中定位和显示符号/GL

4

1 回答 1

0

如果你运行LINK /LIB /LTCG /OUT:output.lib rijndael.obj它应该生成一个带有实际编译代码的静态库。然后您可以运行dumpbin /ALL output.lib以查看符号。对我dumpbin /SYMBOLS output.lib不起作用。

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

于 2017-01-19T03:15:42.070 回答