未定义的对“SHA1”的引用

Undefined reference to `SHA1'

我在这里发帖是因为 Code::Blocks

有问题

我最近在 linux 中创建了一个可以正确编译和执行的项目。 现在我试图让它在 windows.

上运行

问题

感谢Code::Blocks,当我尝试编译时,我收到了错误: C:\Users\PC\Desktop\Collector\verification.c |44|对“SHA1”的未定义引用|

这是我的配置:

在 "Linker setting" 我有: -lws2_32进入"Other linker options".

在 "Search directories" 选项卡中,我得到了:

在 "Compiler" 中:

..\..\..\..\OpenSSL-Win64\include

对应于我的 Open SSL 安装的包含文件

In Linker : ..\..\..\..\OpenSSL-Win64\lib

对应Open SSL的lib

这里是编译出现问题的 C 代码的摘录:

    bool checkVol(Index* index, unsigned char* vol, int id_vol) {
        char outsha[40] = { 0 };
        unsigned char outbuf[SHA_DIGEST_LENGTH];

        SHA1(vol, sizeof(vol), outbuf);

        hexToString(outbuf, outsha);

        printf("%s\n", outsha);
        printf("%s\n", index->sha[id_vol]);

        if ( strcmp(outsha, index->sha[id_vol]) == 0 ) {
            printf("Volume %i is the same.\n", id_vol);
            return TRUE;
        }

        return FALSE;
    }

我不知道下一步该怎么做才能使我的程序在 windows 上运行... 有人知道好配置吗?

感谢您的帮助。

PS : 抱歉我的英语可能不好 :x

我终于自己解决了这个问题。

修复:

首先我删除了 x64 版本 然后从 this link

安装 "Win32 OpenSSL v1.0.1L"

然后使用以下配置更新我的构建选项:

我在 "linker setting" 中添加了:来自

的 2 个“.a”
"C:\OpenSSL-Win32\lib\MinGW\"

通过输入更新 "Search directories":

"C:\OpenSSL-Win32\include"

在 "Compiler" 选项卡中。

希望这对其他人有帮助! :D