【发布时间】:2014-04-27 21:54:31
【问题描述】:
我正在尝试编译一个如何实现 SHA1 的示例,但我不断收到此错误:
[Linker Error] Unresolved external '_SHA1' referenced from C:\PROGRAM FILES (X86)\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ
我从他们的网站下载了 openssl 文件,我尝试将 headers 目录复制到我的项目目录并将其复制到我的包含目录,但没有。
这是示例代码:
#include <string.h>
#include <openssl/sha.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
int i;
unsigned char ibuf[] = "compute sha1";
unsigned char obuf[20];
SHA1(ibuf, strlen(ibuf), obuf);
for (i = 0; i < 20; i++) {
printf("%02x ", obuf[i]);
}
printf("\n");
return 0;
}x
P.S:我正在使用 Borland C++ Builder 6
【问题讨论】:
-
这是一个链接错误。您的项目未设置为与 OpenSSL libcrypto 库链接。似乎您在 Windows 程序中使用 libcrypto 的说明中途停止了。谢天谢地(对我来说)我使用 Visual Studio,所以我不知道在 BC-builder 中在哪里添加库路径和链接器指令。但是在您的文档中深入挖掘,您会发现它。
-
Borland C++ Builder 6(大约 2002 年)在大多数标准中都是古老的。如果你不介意我问,你为什么要使用它?
-
@noloader 我正在使用它,因为我的导师给了我。
-
@noloader:我在日常工作中使用 C++Builder 6,因为我的雇主要求我这样做。 OpenSSL 在其中工作得很好。您不应该批评人们对开发工具的选择。
-
雷米 - 这不是批评。我只是好奇为什么要使用这些工具。这与有人说“我正在使用 Fedora 1(大约 2003 年)作为我的网络服务器平台”的好奇心没有什么不同。另外,由于运行时不同,Shining Light 的 Win32OpenSSL 和 C++ Builder 之间可能存在兼容性问题。
标签: c++ openssl c++builder sha