64位Windows上的OpenSSL

我正在尝试在Windows 8上构build和链接OpenSSL,并发现它非常令人生畏。 我应该提到,我知道以下职位

  • OpenSSL Windows x64编译错误
  • 如何编译OpenSSL for x64?
  • 构buildOpenSSL VC ++静态64位库

但没有一个能够解决我真正需要知道的事情。 所以我决定和大家分享我的经验作为一个新的职位!

首先,我可以在Win32操作系统上成功地build立和链接OpenSSL,并且完美的工作。 我知道Windows 8自带了WOW64 。 “ WOW64是一个x86模拟器,允许32位基于Windows的应用程序在64位Windows上无缝运行 ”,但是当我运行我的应用程序是build立在Windows 7 32位,我收到一个错误“ 程序可以”因为libeay32.dll是从您的计算机丢失… “而” libeay32.dll “显然是在那里,并没有失踪。

为了避免registry丢失的东西,我试图在Windows 8上以32位模式构buildOpenSSL。构build成功完成,应用程序链接正确,没有错误。 同样,当我运行应用程序,我收到了同样的错误信息。

然后我试图按照以下步骤在64位模式下构build它。

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 -es/out32/out64/g ms\ntdll.mak | ssed … > ms\ntdll-64.mak ssed -es/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 

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

现在,当我尝试在Visual Studio中使用新的“ libeay64.lib和ssleay64.lib ”构build我的解决scheme时,我收到了几千个错误,说“ 无法parsing的外部符号”

所以如果可能的话请回答以下问题。

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

我使用的是OpenSSL ver 1.0.1eVisual Studio 2012nasm 2.10.07

谢谢

我部分回答你的问题:

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

对于64位以下的OpenSSL,在visual studio下有一个编译选项/ WX,这意味着将警告视为错误。 从生成文件中删除该编译器选项。 你会得到很多的警告。 但是OpenSSL将被编译。

由于大多数模块没有编译,而且它们的目标文件也没有生成,所以你得到了链接错误。 请让我知道,如果它解决了你的问题。