libcrypto ++ в Linux - PullRequest
       3

libcrypto ++ в Linux

2 голосов
/ 05 января 2011

Для кода:

#include <fstream>

#include <iostream> //cryptopp libraries

#include "cryptopp/dll.h"

#include "cryptopp/default.h"


using namespace std;

using namespace CryptoPP;

int main()
{

 byte key[AES::DEFAULT_KEYLENGTH], iv[AES::BLOCKSIZE];

    // initialize key and iv here

    CFB_Mode<AES >::Encryption cfbEncryption(key, AES::DEFAULT_KEYLENGTH, iv);

 std::cout << "Hello world!" << std::endl;

 return 0;

}

У меня следующие ошибки при компиляции: $: g ++ test.cpp -o tess -lcrypto ++ -lpthread

/ tmp / ccLR085h.o: в функции CryptoPP::AllocatorWithCleanup<unsigned char, true>::allocate(unsigned int, void const*)': test.cpp:(.text._ZN8CryptoPP20AllocatorWithCleanupIhLb1EE8allocateEjPKv[CryptoPP::AllocatorWithCleanup<unsigned char, true>::allocate(unsigned int, void const*)]+0x2b): undefined reference to CryptoPP :: AlignedAllocate (unsigned int) ' test.cpp: ( «: test.cpp :(. text._ZN8CryptoPP20AllocatorWithCleanupIhLb1EE10deallocateEPvj [CryptoPP :: AllocatorWithCleanup :: deallocate (void *, unsigned int)] + 0x25): неопределенная ссылка на CryptoPP::AlignedDeallocate(void*)' test.cpp:(.text._ZN8CryptoPP20AllocatorWithCleanupIhLb1EE10deallocateEPvj[CryptoPP::AllocatorWithCleanup<unsigned char, true>::deallocate(void*, unsigned int)]+0x32): undefined reference to CryptoPalPalPal collect2: ld вернул 1 статус выхода

НУЖНА ПОМОЩЬ. THX

1 Ответ

0 голосов
/ 11 мая 2011

Этот хитрый. Я подозреваю, что размещенная вами строка компиляции не является строкой компиляции, которая вызвала ошибки. Когда я делаю

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++, потому что это то, что произвел мой источник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...