我正在使用MinGW工具链尝试将Crypto ++用于我的Eclipse C ++项目。问题是,每当我尝试使用加密函数时,我都会被"未定义的引用"错误。有谁之前经历过这个吗?这就是我得到的(截断的):
已更新
g++ -L "C:\\Libraries\\crypto++\\Win32\\DLL_Output\\Debug" -lpthread -lcryptopp -o "Grum Net.exe" "src\\Vault\\VaultNode.o" "src\\User.o" "src\\Grum Net.o"
src\Grum Net.o: In function `ZN8CryptoPP18HashTransformationD2Ev':
C:/Libraries/crypto++/cryptlib.h:531: undefined reference to `vtable for CryptoPP::HashTransformation'
src\Grum Net.o: In function `ZN8CryptoPP18HashTransformationC2Ev':
C:/Libraries/crypto++/cryptlib.h:531: undefined reference to `CryptoPP::Algorithm::Algorithm(bool)'
C:/Libraries/crypto++/cryptlib.h:531: undefined reference to `vtable for CryptoPP::HashTransformation'
src\Grum Net.o: In function `ZN8CryptoPP31IteratedHashWithStaticTransformIjNS_10EnumToTypeINS_9ByteOrderELi0EEELj64ELj16ENS_5Weak13MD5ELj0ELb0EE4InitEv':
C:/Libraries/crypto++/iterhash.h:90: undefined reference to `CryptoPP::Weak1::MD5::InitState(unsigned int*)'
src\Grum Net.o:Grum Net.cpp:(.rdata$_ZTVN8CryptoPP5Weak13MD5E[__ZTVN8CryptoPP5Weak13MD5E]+0x18): undefined reference to `CryptoPP::IteratedHashBase<unsigned int, CryptoPP::HashTransformation>::Update(unsigned char const*, unsigned int)'
src\Grum Net.o:Grum Net.cpp:(.rdata$_ZTVN8CryptoPP5Weak13MD5E[__ZTVN8CryptoPP5Weak13MD5E]+0x1c): undefined reference to `CryptoPP::IteratedHashBase<unsigned int, CryptoPP::HashTransformation>::CreateUpdateSpace(unsigned int&)'
src\Grum Net.o:Grum Net.cpp:(.rdata$_ZTVN8CryptoPP5Weak13MD5E[__ZTVN8CryptoPP5Weak13MD5E]+0x24): undefined reference to `CryptoPP::IteratedHashBase<unsigned int, CryptoPP::HashTransformation>::Restart()'
src\Grum Net.o:Grum Net.cpp:(.rdata$_ZTVN8CryptoPP5Weak13MD5E[__ZTVN8CryptoPP5Weak13MD5E]+0x44): undefined reference to `CryptoPP::IteratedHashBase<unsigned int, CryptoPP::HashTransformation>::TruncatedFinal(unsigned char*, unsigned int)'
src\Grum Net.o:Grum Net.cpp:(.rdata$_ZTVN8CryptoPP5Weak13MD5E[__ZTVN8CryptoPP5Weak13MD5E]+0x4c): undefined reference to `CryptoPP::HashTransformation::TruncatedVerify(unsigned char const*, unsigned int)'
答案 0 :(得分:1)
您的-L
在引号内。你试过了吗?
g++ -L "C:\\Libraries\\crypto++" -lpthread -o "Grum Net.exe" "src\\VaultNode.o" "src\\User.o" "src\\Grum Net.o"
既然g ++知道在哪里查找你的lib,你还需要指定你想要使用的 C:\ Libraries \ crypto ++ 目录中的哪些库:
g++ -L "C:\\Libraries\\crypto++" -lcryptolib1 -lcryptolib2 -lpthread -o "Grum Net.exe" "src\\VaultNode.o" "src\\User.o" "src\\Grum Net.o"