Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
64位Windows上的OpenSSL_Windows_Openssl_64 Bit - Fatal编程技术网

64位Windows上的OpenSSL

64位Windows上的OpenSSL,windows,openssl,64-bit,Windows,Openssl,64 Bit,我正在尝试在Windows8上构建和链接OpenSSL,我发现这真的令人望而生畏。我应该提到的是,我知道以下帖子 但没有一个是我真正需要知道的。因此,我决定作为一个新职位与你们分享我的经验 首先,我可以在Win32操作系统上成功地构建和链接OpenSSL,并且它可以完美地工作。我知道Windows 8附带了。“”,但当我运行基于windows 7 32位的应用程序时,我收到一个错误“程序无法启动,因为您的计算机中缺少libeay32.dll…”,而“libeay32.dll”显然在那里

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

但没有一个是我真正需要知道的。因此,我决定作为一个新职位与你们分享我的经验

首先,我可以在Win32操作系统上成功地构建和链接OpenSSL,并且它可以完美地工作。我知道Windows 8附带了。“”,但当我运行基于windows 7 32位的应用程序时,我收到一个错误“程序无法启动,因为您的计算机中缺少libeay32.dll…”,而“libeay32.dll”显然在那里并且没有丢失

为了避免注册表丢失内容,我尝试在Windows8上以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
在这种情况下,我收到了很多警告,主要是关于构建期间的“数据转换和数据丢失的可能性”,但它是构建的,而“测试”失败“安装”生成的输出

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

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

  • 为什么我不能在Windows 8(64位)上运行我的32位应用程序
  • 为什么要在Windows8上正确构建OpenSSL(32位模式) 遇到同样的错误
  • 在OpenSSL构建(64位模式)中,我是否做错了什么
  • 我正在使用OpenSSL 1.0.1e版、Visual Studio 2012版和nasm 2.10.07版


    谢谢

    我部分回答了你的问题:

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

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

    因为,大多数模块都没有编译,也没有生成它们的对象文件,所以会出现链接器错误。请告诉我它是否解决了您的问题。

    谢谢,我使用perl和nasm编译OpenSSL源代码。我试图找到这样的选项(/WX),但找不到。事实上,我没有使用VisualStudio来构建OpenSSL库。我得到的答案正确吗?对于第二部分,显然它被编译了,但是当我尝试在VisualStudio中链接它时,我收到了所说的错误。