下面是对我的问题的更新:我正在尝试做一些事情--任何事情--让d2i_PKCS12_fp()开始工作。我现在从一个用/MD编译的新dll调用它。没有变化。这是我的代码:
#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运行时错误。如果有人能对此有所了解,我将不胜感激。
-原始问题
我试图在用多线程(D2i_PKCS12_fp)运行库编译的Windows中使用/MT() API调用。在这个调用中,我得到运行时错误“OPENSSL_Uplink(03CE100008):无OPENSSL_Applink”。从我看到的关于这个错误的讨论中,我认为我可以通过在我的项目中添加"applink.c“并调用CRYPTO_malloc_init()来修复它。然而,这没有任何效果。/MT的使用会导致这种情况吗?由于项目的其他组成部分,很难改变这一点。我在这个项目中使用了HMAC和SHA256 API,没有问题。如果只是文件I/O导致了问题,那么是否有一种方法可以自己在.p12文件中读取,并将缓冲区传递给OpenSSL以初始化PKCS12结构?我正在使用MSVC 2010。
发布于 2017-06-09 15:05:30
我有一个类似的问题,我在网上看到#include <openssl\applink.c>丢失了,但它没有解决这个问题。我的问题是,我是在调试模式下工作,而OpenSSL是在发布模式下构建的。重新构建 OpenSSL in Debug (使用perl Configure debug-VC-WIN32)修复了这个问题.希望这对你有帮助!
发布于 2018-01-13 16:20:13
在Windows上使用用于C++的OpenSSL库编译OpenSSL Qt项目时,我也遇到了相同的运行时错误。版本构建运行良好,但调试版本显示运行时错误:OPENSSL_Uplink(0F7D26B8,08):无OPENSSL_Applink
此错误的原因是对ERR_print_errors_fp(stderr)函数的调用。在评论了ERR_print_errors_fp之后,一切都很好。
https://stackoverflow.com/questions/24130476
复制相似问题