Создание и связывание тестового кода для Crypto ++

Я пытаюсь написать простой тестовый код для библиотеки Crypto ++ для проекта. Мне все еще не удалось получить собственный код для сборки. Компилируется нормально, проблема в линковке. Я все еще довольно новичок в Visual Studios, но я использую VS10. Я получаю следующие ошибки:

1>sec_test.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall CryptoPP::DES::Base::ProcessAndXorBlock(unsigned char const *,unsigned char const *,unsigned char *)const " (?ProcessAndXorBlock@Base@DES@CryptoPP@@UBEXPBE0PAE@Z)
1>sec_test.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall CryptoPP::DES::Base::UncheckedSetKey(unsigned char const *,unsigned int,class CryptoPP::NameValuePairs const &)" (?UncheckedSetKey@Base@DES@CryptoPP@@UAEXPBEIABVNameValuePairs@3@@Z)

Я перепробовал все, что могу найти в документации с точки зрения ссылок. Я никогда не связывался с DLL раньше, но это ошибки, которые я получаю, когда пытаюсь это сделать. Если я попытаюсь сделать то, что я считаю связыванием со статической версией библиотеки, я получу еще больше.

Должен заметить, я сейчас пытаюсь протестировать чистый DES. В частности, вот вызовы API, которые я делаю, просто чтобы быть в безопасности:

DES::Encryption  DES_encrypt;
DES_encrypt.SetKey(key, 64);
DES_encrypt.ProcessAndXorBlock(plaintext, NULL, ciphertext);

DES::Decryption DES_decrypt;
DES_decrypt.SetKey(key, 64);
DES_decrypt.ProcessAndXorBlock(ciphertext, NULL, decrypted);

Если кто-то может помочь или указать мне правильное направление, я был бы очень благодарен.

0

Решение

Первое, что нужно проверить, это свойства вашего проекта (щелкните правой кнопкой мыши на проекте, нажмите Properties).

Внешние библиотеки должны быть указаны в Linker->Input->Additional Dependencies поле, либо по абсолютному пути, либо в сочетании с другими свойствами пути VS.

Вы можете посмотреть в Linker->Command Line и проверьте, что .lib-файлы, которые вы хотите, действительно передаются компоновщику.

Альтернативный метод — отключить Suppress Startup Banner вариант в Linker->General параметры, а затем проверьте вывод сборки, чтобы убедиться, что он имеет то, что вы хотите.

Если вы знаете, что библиотеки, которые вы хотите, связаны, другой полезный трюк — проверить вывод strings команда (в Linux или Cygwin) или dumpbin /HEADERS в командной строке VS Вы можете просмотреть выходные данные этих команд на предмет отсутствия символа VS, чтобы убедиться, что он действительно определен в файле .lib. Иногда в больших пакетах программного обеспечения есть несколько файлов .lib, поэтому это может помочь вам убедиться, что вы связываете тот, у которого есть нужный вам символ.

1

Другие решения

Других решений пока нет …