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

谢谢

Solutions Collecting From Web of "64位Windows上的OpenSSL"

我部分回答你的问题:

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

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

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