我正在尝试在 Windows 8 上构建和链接 OpenSSL,但我发现它确实令人生畏。我应该提到我知道以下帖子
但他们都没有解决我真正需要知道的问题。因此,我决定将我的经验作为一个新帖子与大家分享!
首先,我可以在 Win32 操作系统上成功构建和链接 OpenSSL,并且它可以完美运行。我知道Windows 8带有WOW64。“<a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa384249%28v=vs.85%29.aspx" rel="nofollow noreferrer">WOW64 是一个 x86 模拟器允许基于 32 位 Windows 的应用程序在 64 位 Windows 上无缝运行”,但是当我运行基于 Windows 7 32 位构建的应用程序时,我收到错误“<strong>程序无法启动,因为您的计算机中缺少 libeay32.dll……</strong>”,而“<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
在这种情况下,我在构建过程中收到了很多关于“数据转换和数据丢失可能性”的警告,但它是构建的,而“<strong>test”失败“<strong>install”生成输出。
现在,当我尝试使用新的“<strong>libeay64.lib 和 ssleay64.lib”在 Visual Studio 中构建我的解决方案时,我收到了几乎数千个错误,提示“未解析的外部符号”</p>
因此,如果可能,请回答以下问题;
- 为什么我无法在 Windows 8(64 位)上运行我的 32 位应用程序?
- 为什么在 Windows 8 上正确构建 OpenSSL(32 位模式),仍然遇到同样的错误?
- 在 OpenSSL 构建(64 位模式)中,我做错了吗?
我正在使用OpenSSL ver 1.0.1e、Visual Studio 2012和nasm 2.10.07
谢谢