类型初始化使用 OpenSsl.net 异常

本文关键字:net 异常 OpenSsl 初始化 类型 | 更新日期: 2023-09-27 18:30:18

我正在尝试使用 OpenSsl.net 但是我得到了一个TypeInitializationException,这让我感到困惑。设置为:

  • 我有一个控制台应用程序,它有一个对 openssl.net 的项目引用(实际上我正在使用这里的叉子:https://github.com/marcominetti/openssl-net)
  • 我已经在我的机器上编译了openssl(用于32位窗口),并将libeay32.dll和ssleay32.dll复制到控制台应用程序的bin/Debug文件夹中。
  • bin/调试文件夹还包含 libcrypto.so
  • 我的机器是 64 位的(openssl 的 64 位构建失败,但这是另一个问题)
  • 控制台应用程序设置为 x86 的平台目标

但是,在运行时,我得到一个包含详细信息的TypeInitializationException:

无法加载 DLL 'librypto':找不到指定的模块。(HRESULT的例外:0x8007007E)

我做错了什么?

类型初始化使用 OpenSsl.net 异常

所以我终于想通了。

在更仔细地查看了 fork 中的代码后,它看起来似乎更适合 Linux 环境而不是 Windows(这是我正在使用的操作系统 - 可能应该提到......

在本机中.cs它将DLLNAME指定为libcrypto而不是libbeay32。看起来这可能是针对linux系统而不是Windows的。

托管开放 ssl 的 app.config 确实包括一些 dllmap 部分,这些部分似乎试图将 libcrypto 的请求重定向到 libeay32.dll但这似乎不起作用(我不知道这是否仅适用于单声道?

我已将 DLLNAME 设置为 libeay32,一切似乎都按预期工作。