尝试在Qt项目中使用CryptoPP库时出现LNK2001错误

问题描述

我正在尝试在Qt项目中使用CryptoPP lib。 我首先使用Visual C ++ 2019构建了Crytplib。我将运行时选项更改为MDd(多线程调试DLL)。它生成了cryptlib.lib。

在Qt中,我添加了:

LIBS += -L$$PWD/../libs/CryptoPP/x64/Output/Release/ -lcryptlib
INCLUDEPATH += $$PWD/../libs/CryptoPP

编译会出现以下错误

cryptlib.lib(keccak_core.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(ecp.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(rng.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(rijndael_simd.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(des.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(gfpcrypt.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(hmac.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(gf2n.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(ec2n.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(modes.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(oaep.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(sha3.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(pssr.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(nbtheory.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(sha_simd.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(rijndael.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(hrtimer.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(base64.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(files.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(mqueue.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(dll.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(pubkey.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(pkcspad.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(asn.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(rsa.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(iterhash.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(sha.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(randpool.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(osrng.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(algparam.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(queue.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(basecode.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(hex.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(cryptlib.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(misc.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(filters.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(integer.obj) : error LNK2001: symbole externe non résolu __CxxFrameHandler4
cryptlib.lib(keccak_core.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(ecp.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(rng.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(rijndael_simd.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(des.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(gfpcrypt.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(hmac.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(gf2n.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(ec2n.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(modes.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(oaep.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(sha3.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(pssr.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(nbtheory.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(sha_simd.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(rijndael.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(hrtimer.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(base64.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(files.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(mqueue.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(dll.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(pubkey.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(pkcspad.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(asn.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(rsa.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(iterhash.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(sha.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(randpool.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(osrng.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(algparam.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(queue.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(basecode.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(hex.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(cryptlib.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(misc.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(filters.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(integer.obj) : error LNK2001: symbole externe non résolu __GSHandlerCheck_EH4
cryptlib.lib(integer.obj) : error LNK2019: symbole externe non résolu __std_reverse_trivially_swappable_1 référencé dans la fonction "void __cdecl std::reverse<unsigned char *>(unsigned char * const,unsigned char * const)" (??$reverse@PEAE@std@@YAXQEAE0@Z)
debug\prxQWT.exe : Fatal error LNK1120: 3 externes non résolus

似乎很多人都无法使它与Qt一起使用,而且似乎没有人拥有正确的方法。顺便说一句,我正在使用Qt 5.12.0。

解决方法

我终于解决了这个问题。这是因为我用MSVC2019构建Crypto ++,而Qt是用MSVC2015构建。