【发布时间】:2015-04-29 10:51:17
【问题描述】:
由于 Code::Blocks 的问题,我在这里发帖
我最近在 linux 中创建了一个可以正确编译和执行的项目。 现在我正在尝试让它在 Windows 上运行。
问题
感谢 Code::Blocks 在我尝试编译时收到错误消息: C:\Users\PC\Desktop\Collector\verification.c |44|未定义对`SHA1'的引用|
这是我的配置:
- 右键单击我的项目
- 然后是“构建选项”
在“链接器设置”中,我有: -lws2_32 进入“其他链接器选项”。
在“搜索目录”选项卡中:
在“编译器”中:
..\..\..\..\OpenSSL-Win64\include
对应于我的 Open SSL 安装的包含文件
在链接器中:..\..\..\..\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
【问题讨论】:
-
您还需要一个
-lcrypto来链接到SHA1函数。 -
感谢您的回复 我已经尝试过您的解决方案,但出现错误:“ld.exe||找不到 -lcrypto|”
-
那么 lib 文件的搜索路径不正确,因为那是包含 SHA1 例程的 OpenSSL 库的名称。
-
然后我不知道该尝试什么...我找不到解决此问题的方法。我试图编辑所有设置,但没有任何效果。搜索后,我的“OpenSSL-Win64”目录中没有“libcrypto.*”:/
-
解决方案应该作为答案发布,而不是编辑到您的问题中。 (是的,您可以发布自己问题的答案。)
标签: c windows openssl codeblocks sha1