2016-02-06 1 views
1

Мы ловим ошибку компоновщика:Как найти и отобразить символы при использовании/GL?

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

Недостающий символ находится в rijndael.cpp и его его использовали в x64dll.asm так:

include ksamd64.inc 
EXTERNDEF [email protected]@[email protected]@3PA_KA:FAR 
EXTERNDEF [email protected]@@3IA:FAR 
EXTERNDEF [email protected]@@3QBIB:FAR 
... 

Источник файлы скомпилированы с помощью /GL, поэтому мы не можем использовать dumpbin /symbols на rijndael.obj для проверки объектных файлов, чтобы увидеть, что происходит с этой конфигурацией. Также см. Документацию Dumpbin's /SYMBOL и Why is DumpBin telling me there are no COMDATs in my binaries...?.

Документация Microsoft сообщает нам, что мы не можем использовать, но не может сказать нам, что мы должны использовать в этой ситуации.

Как мы найти и отображать символы в объектных файлов при компиляции с /GL?

ответ

0

Если вы запустите LINK /LIB /LTCG /OUT:output.lib rijndael.obj, он должен создать статическую библиотеку с фактическим скомпилированным кодом. Затем вы можете запустить dumpbin /ALL output.lib, чтобы увидеть символы. dumpbin /SYMBOLS output.libнет работа для меня.

Возможно, вам потребуется настроить линию LINK, чтобы включить дополнительные флаги, которые обычно передаются при соединении. Например, /LIBPATH записей и тому подобное.

Смежные вопросы