【发布时间】:2014-06-09 23:11:15
【问题描述】:
下面我的问题的更新:我正在尝试做某事 - 任何事情 - 让 d2i_PKCS12_fp() 工作。我现在从一个新的 dll 调用它 用 /MD 编译。没有变化。这是我的代码:
#include <openssl\applink.c>
CRYPTO_malloc_init();
OpenSSL_add_all_algorithms();
fptr = fopen(p12_file, "rb");
if (fptr == NULL) return(FALSE);
d2i_PKCS12_fp(fptr, &p12_cert);
fclose(fptr);
对 d2i_PKCS12_fp() 的调用总是产生无 OPENSSL_Applink 运行时 错误。如果有人能对此有所了解,我将不胜感激。
---原始问题----
我正在尝试在 Windows DLL 中使用 d2i_PKCS12_fp() API 调用 使用多线程 (/MT) 运行时库编译。在这个电话中,我 得到运行时错误“OPENSSL_Uplink(03CE1000,08): no OPENSSL_Applink”。 从我看到的关于这个错误的讨论中,我想我可以通过 将“applink.c”添加到我的项目中,并调用 CRYPTO_malloc_init()。 但是,这没有效果。使用 /MT 会导致这种情况吗?这将是 由于项目的其他组成部分,很难改变这一点。我有 在这个项目中使用 HMAC 和 SHA256 API 没有问题。如果是 只是导致问题的文件 I/O,有没有办法可以 自己读入 .p12 文件,然后按顺序将缓冲区传递给 OpenSSL 初始化 PKCS12 结构?我正在使用 MSVC 2010。
【问题讨论】:
-
我相信
OPENSSL_Applink是用来构建openssl应用程序的——比如openssl enc、openssl dec、openssl sign、openssl verify、openssl x509等。你不用它在构建共享对象和 dll 时。 (而且你也不会在交叉编译时构建它,比如 Android 或 iOS)。 -
源自stackoverflow.com/questions/24066318/… 并在那里回答。
标签: visual-c++ openssl