参考:https://blog.youkuaiyun.com/penzchan/article/details/37737445
报错
项目结构为
MFC应用B.exe调用A.dll,其中A.dll调用了openssl中的内容。
在运行B.exe的时候弹框报错为:OPENSSL_Uplink no OPENSSL_Applink

从调试来看是崩溃在了:BIO_new_fp 函数上。
解决方法
在B.exe中调用函数的cpp文件添加下面内容,注意:这段话添加到A.dll中是没有用的,具体原因参考上面链接。
#ifdef __cplusplus
extern "C" {
#endif
#include "C:/Program Files (x86)/OpenSSL/include/openssl/applink.c"
#ifdef __cplusplus
}
#endif
其中:include的文件位具体路径,由于我B.exe没有导入OpenSSL库,因此不能直接用#include <openssl/applink.c>"

本文解决了一个MFC应用程序(B.exe)调用包含openssl内容的A.dll时出现的OPENSSL_UplinknoOPENSSL_Applink错误。问题出现在BIO_new_fp函数调用时崩溃。通过在B.exe的cpp文件中特定位置添加openssl的applink.c文件的引用解决了此问题。注意,此解决方案不适用于A.dll。
1221





