2012-05-10 5 views
2

Я установил Win64 OpenSSL v1.0.1b и Visual C++ 2008 Redistributables с этой страницы http://slproweb.com/products/Win32OpenSSL.html и добавил компилятор (C:\OpenSSL-Win64\include) и компоновщика пути (C:\OpenSSL-Win64\bin, C:\OpenSSL-Win64\lib, C:\OpenSSL-Win64) в Code :: Blocks , но я все еще не могу скомпилировать свою программу.Blowfish и неопределенная ссылка на `BF_set_key»

Исходный код:

#include <cstring> 
#include <openssl/blowfish.h> 

int main() { 
    const char * key = "aaabbbcccdddeeefffggghh"; 
    BF_KEY bfKey; 

    BF_set_key(&bfKey, strlen(key), (const unsigned char *) key); 

    return 0; 
} 

Ошибка:

obj\Release\main.o:main.cpp|| undefined reference to `BF_set_key'| 

Я пытался добавить -lssl, -lopenssl, -llibssl, -lcrypto, но он не работает. Затем я вижу другую ошибку:

ld.exe||cannot find -lssl| 

Я понятия не имею (и Google), что делать. Любые идеи, что я делаю неправильно?

ответ

0

Я не уверен, что вы правильно настроили его. Похоже, вам также нужно добавить библиотеки, которые ваш проект использует где-то в настройках сборки, помимо установки каталогов библиотек. Помогает ли это? http://www.learncpp.com/cpp-tutorial/a3-using-libraries-with-codeblocks/

+0

Я видел эту страницу, и я пробовал это решение, теперь я попытался добавить все (я не уверен, какой из них отвечает за то, что мне нужно) от lib/как на шаге 5, но он все еще не Работа. – Kobra

0

Поскольку вы используете компилятор GCC (MinGW) с кодом :: Blocks, вам необходимо сменить каталог поиска библиотеки (C: \ OpenSSL-Win64 \ lib) на C: \ OpenSSL-Win64 \ lib \ MinGW и для связи библиотеки, в которой есть функция Blowfish, вы должны использовать -leay32 (в вашем случае, вероятно, есть -leay64).

Внутри каталога C: \ OpenSSL-Win64 \ lib \ MinGW есть 2 файла с расширением .def, которые имеют список функций, экспортируемых каждой библиотекой (libeay32.a/libeay64.a и ssleay32.a/ssleay64 .a), кстати, если вы используете опцию -l, файл должен называться lib.a; если вы хотите использовать любую из функций в библиотеке ssleay32.a/ssleay64.a, вы должны напрямую связать файл (например, C: \ OpenSSL-Win64 \ lib \ MinGW \ ssleay32.a) или добавить lib к имени файла.

+0

Есть проблема. У меня нет MinGW/in lib/- просто VC/Также, когда я пытаюсь добавить -leay64 Code :: Blocks показывает «не может найти -leay64» и для -leay32 'C: \ OpenSSL-Win64 \ bin/libeay32.dll : файл не распознан: формат файла не распознан ". В lib/я вижу только * .lib-файлы, а не * .a. – Kobra