0

我以前编译过 32 位的 openssl 源代码并在我的 c++ 项目中使用它。但由于某些原因,我想让我的程序为 64 位,并在程序启动时引用我创建的 dll 时出错。

我的 c++ 程序 A.dll 使用 openssl 库。在x86中使用它之前没有任何问题,B.dll使用的是我自己编译的openssl 32bit

System.DllNotFoundException:无法加载 DLL 'A.dll' 或其依赖项之一:找不到指定的模块。(0x8007007E)

我在 B.exe 中使用 A.dll。B.exe 在 c# 中,在我的电脑上使用 x86 A.dll 时可以,但是当将所有 dll 和 b.exe 复制到另一台计算机时,它将无法工作并出现上述错误,因此决定在 64 位编译 openssl,并且在 A.dll 中使用 openssl 64bit 时,会出现 c++ 中的链接错误。

在 x86 之前,我引用了 ssleay32.lib 和 libeay32.lib。

但是在 64bit openssl 编译时找不到这些库,只有 libcrypto.lib 和 libssl.lib。

我怎么能摆脱这个问题?

4

1 回答 1

0

保持简单。让我们从 64 位 openssl 重新开始。

转到 C:\Program Files\OpenSSL-Win64\(如果您下载 64 位 openssl)

然后,您可以看到 libssl1_1-x64.dll 和其他 dll 文件。

还有 include 和 lib 目录,您可能需要包含它们。

不要使用链接等 dll 文件。只需分别使用 dll 或 lib 文件。

于 2020-08-25T20:01:50.310 回答