Этот хитрый. Я подозреваю, что размещенная вами строка компиляции не является строкой компиляции, которая вызвала ошибки. Когда я делаю
g++ test.cpp -o tess -lcryptopp -lpthread -L.
Я не получаю ошибок, но когда я делаю
g++ -o tess -lcryptopp -lpthread -L. test.cpp
Я получаю много ошибок, начиная с
/tmp/ccCSTBSy.o: In function `CryptoPP::SimpleKeyingInterface::SimpleKeyingInterface()':
SO4602996.cpp:(.text._ZN8CryptoPP21SimpleKeyingInterfaceC2Ev[CryptoPP::SimpleKeyingInterface::SimpleKeyingInterface()]+0x4): undefined reference to `vtable for CryptoPP::SimpleKeyingInterface'
/tmp/ccCSTBSy.o: In function `CryptoPP::SecBlock<unsigned char, CryptoPP::AllocatorWithCleanup<unsigned char, false> >::SecBlock(unsigned int)':
SO4602996.cpp:(.text._ZN8CryptoPP8SecBlockIhNS_20AllocatorWithCleanupIhLb0EEEEC1Ej[CryptoPP::SecBlock<unsigned char, CryptoPP::AllocatorWithCleanup<unsigned char, false> >::SecBlock(unsigned int)]+0x25): undefined reference to `CryptoPP::AllocatorWithCleanup<unsigned char, false>::allocate(unsigned int, void const*)'
Что похоже на ошибки, которые вы получили.
Обратите внимание, что я скомпилировал cryptopp 5.6.1 из исходного кода и поместил копию библиотеки в каталог, который я использую для этого примера: таким образом, мне нужно -L.
, чтобы включить текущий каталог в Поиск пути к библиотеке. Я также использую -lcryptopp
вместо -lcrypto++
, потому что это то, что произвел мой источник.