【发布时间】:2018-02-20 20:30:31
【问题描述】:
我想在我的DLL 项目中使用Visual Studio 2017 编写的DLL 项目包括RSA 加密,我认为OpenSSL 是完美的。我在Additional Include Directories 和Additional Library Directiories 中添加了我的OpenSSL 文件夹的正确路径,我已将libcrypto.lib/libeay32.lib 添加到Additional Dependencies。该项目可以编译,但是当我想使用 rsa.h 中的一些函数(如 RSA_size)时,我收到如下异常:
Exception thrown at 0x0F17EB64 (libcrypto-1_1.dll) in Win32Project1.exe: 0xC0000005: Access violation reading location 0x00000004.
我假设这是因为库中的某个指针变为 NULL,但我找不到原因。 This 告诉我用常规的 exe 应用程序试试这个库,但即使使用最简单的代码也会出现同样的错误
#include <openssl/rsa.h>
int main()
{
RSA *m_rsa = RSA_new();
RSA_size(m_rsa);
return 0;
}
我尝试在1.1.0 和1.0.2 版本中实现OpenSSL,结果相同。
RSA_new 正确分配了新的 RSA 实例,ERR_get_error() 返回“0”。
【问题讨论】: