提问人:terenaa 提问时间:5/10/2012 最后编辑:jwwterenaa 更新时间:5/9/2015 访问量:3446
河豚和对“BF_set_key”的未定义引用
Blowfish and undefined reference to `BF_set_key'
问:
我已经从此页面安装了 Win64 OpenSSL v1.0.1b 和 Visual C++ 2008 Redistributable,http://slproweb.com/products/Win32OpenSSL.html 并将编译器 () 和链接器路径 (, , ) 添加到 Code::Blocks,但我仍然无法编译我的程序。C:\OpenSSL-Win64\include
C:\OpenSSL-Win64\bin
C:\OpenSSL-Win64\lib
C:\OpenSSL-Win64
源代码:
#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|
我不知道(谷歌也不知道)该怎么做。知道我做错了什么吗?
答:
我不确定您是否正确配置了它。似乎您还必须在设置库目录之上,在“构建选项”中的某个位置添加项目正在使用的库。这有帮助吗?http://www.learncpp.com/cpp-tutorial/a3-using-libraries-with-codeblocks/
评论
由于您将 GCC 编译器 (MinGW) 与 Code::Blocks 一起使用,因此您必须将库 sear 目录 (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 附加到文件的名称。
评论