windows - 64 位 Windows 上的 OpenSSL

标签 windows openssl 64-bit

我正在尝试在 Windows 8 上构建和链接 OpenSSL,我发现它真的令人望而生畏。我应该提一下,我知道以下帖子

但它们都没有解决我真正需要知道的问题。因此,我决定以新帖子的形式与大家分享我的经验!

首先,我可以在 Win32 操作系统上成功构建和链接 OpenSSL,并且它运行良好。我知道 Windows 8 带有 WOW64 . “WOW64 is an x86 emulator that allows 32-bit Windows-based applications to run seamlessly on 64-bit Windows ”,尽管当我运行基于 32 位 Windows 7 构建的应用程序时,我收到错误消息“程序无法启动,因为您的计算机缺少 libeay32.dll……”,而“< strong>libeay32.dll”显然在那里并且没有丢失。

为了避免注册表丢失东西,我尝试在 Windows 8 上以 32 位模式构建 OpenSSL。构建成功完成,应用程序正确链接,没有错误。当我再次运行该应用程序时,我收到了相同的错误消息。

然后我尝试根据以下步骤在 64 位模式下构建它;

set PATH=%PATH%;c:\perl\bin;c:\nasm;
call "c:\visual studio\2012\vc\vcvarsall.bat" x64
perl Configure VC-WIN64A no-shared no-idea
call ms\do_win64a
copy ms\libeay32.def ms\libeay64.def /Y
copy ms\ssleay32.def ms\ssleay64.def /Y

ssed -e s/out32/out64/g ms\ntdll.mak | ssed … > ms\ntdll-64.mak
ssed -e s/out32/out64/g ms\nt.mak | ssed … > ms\nt-64.mak

nmake -f ms\ntdll-64.mak
nmake -f ms\ntdll-64.mak test
nmake -f ms\ntdll-64.mak install

在这种情况下,我在构建过程中收到了很多警告,主要是关于“数据转换和数据丢失的可能性”,但它被构建了,而“test”失败了“install”生成输出。

现在,当我尝试使用新的“libeay64.lib 和 ssleay64.lib”在 Visual Studio 中构建我的解决方案时,我收到几乎数千条“未解析的外部符号”错误

因此,如果可能,请回答以下问题;

  1. 为什么我无法在 Windows 8(64 位)上运行我的 32 位应用程序?
  2. 为什么在 Windows 8 上正确构建 OpenSSL(32 位模式),仍然 遇到同样的错误?
  3. 在 OpenSSL 构建(64 位模式)中,我做错了什么吗?

我正在使用 OpenSSL ver 1.0.1eVisual Studio 2012nasm 2.10.07

谢谢

最佳答案

我正在部分回答你的问题:

您可以在 WOW64 中的 64 位下运行 32 位。

对于64位下的OpenSSL,visual studio下有一个编译器选项/WX,意思是把警告当作错误处理。从 makefile 中删除该编译器选项。你会收到很多警告。但是 OpenSSL 会被编译。

因为大多数模块都没有编译,也没有生成它们的目标文件,这就是您收到链接器错误的原因。如果它解决了您的问题,请告诉我。

关于windows - 64 位 Windows 上的 OpenSSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15626852/

相关文章:

java - 如何使用 openssl 解密 Java-DES 加密的消息?

openssl - 任何用于验证 ECDSA prime256v1 证书和私钥匹配的 openssl 命令行?

c++ - 如何使 QString::fromLocal8Bit 成为默认值?

linux - 带文件路径参数的 Windows 10 Bash 和 Google Chrome

ssl - 在 TLS 交换中查看 Diffie-Hellman 参数 (p,g,Y) 时遇到问题

linux - Linux 上 printf 上的段错误 ASM

linux - 64 位机器中的最大文件映射大小是多少

java - 在 64 位 JVM 上运行的 Eclipse 32 位

Windows批处理文件起始目录时 'run as admin'

c++ - CUDA TCC 驱动程序是否适用于 Windows 上的 geforce 卡?