3

我已经从该页面http://slproweb.com/products/Win32OpenSSL.html安装了 Win64 OpenSSL v1.0.1b 和 Visual C++ 2008 Redistributables ,并将编译器 ( C:\OpenSSL-Win64\include) 和链接器路径 ( C:\OpenSSL-Win64\bin, C:\OpenSSL-Win64\lib, C:\OpenSSL-Win64) 添加到 Code::Blocks,但我仍然无法编译我的程序。

源代码:

#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|

我不知道(和谷歌也)该做什么。任何想法我做错了什么?

4

2 回答 2

0

因为您使用的是带有 Code::Blocks 的 GCC 编译器 (MinGW),所以您必须将库 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 附加到名称的文件。

于 2012-05-10T03:02:54.120 回答
0

我不确定您是否正确配置它。除了设置库目录之外,您似乎还必须在构建选项中的某处添加项目正在使用的库。这有帮助吗?http://www.learncpp.com/cpp-tutorial/a3-using-libraries-with-codeblocks/

于 2012-05-10T02:17:12.013 回答