【发布时间】:2011-03-05 20:58:54
【问题描述】:
我正在尝试在我的 C++ 项目中使用 OpenSSL 的 SHA512 函数。为此,我在调用SHA512 并链接到libeay32.lib 库的源文件中包含openssl/sha.h。
SHA512 在openssl/sha.h 中声明为:
extern "C" {
//...
unsigned char *SHA512(const unsigned char *d, size_t n,unsigned char *md);
//...
}
但是,在链接时,找不到符号:
mysql_sha.obj:错误 LNK2019:函数 _sha512 中引用的未解析外部符号 _SHA512问题似乎是在libeay32.lib 中,函数的符号实际上是SHA512(没有前导下划线),我还看到__imp_SHA512,而通常它是__imp__SHA512。
我使用的是 Shining Light Productions 的 Win64 build of OpenSSL 1.0.0d。
为什么SHA512 函数的符号没有前导下划线?我该如何解决这个问题?
【问题讨论】:
-
一个问题过于本地化了。更适合邮件列表。
-
我不同意 Shaggy。为什么这个问题困扰你?
-
@Shaggy:它只是特定于 Windows 的“本地化”。我自己不使用该平台,但我知道由于某种原因它仍然很受欢迎。
-
@TonyK @MikeSeymour 它是本地化的,因为有人在为特定操作系统询问特定库的特定版本中的单个特定符号名称。这就是本地化的定义。这种细节更适合项目的邮件列表。
-
@Shaggy Frog:请注意,OP 的问题现已得到回答并被接受。我认为这是 stackoverflow 的成功。
标签: c++ c linker openssl x86-64