2013-03-25 108 views
2

我想在Windows 8上建立和鏈接OpenSSL,我發現它確實令人生畏。我要指出,我知道下面的帖子64位Windows上的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」,不過當我運行我的應用程序是內置在Windows 7 32位,我收到一個錯誤「程序無法啓動,因爲的libeay32.dll從計算機中缺少...」,而「的libeay32.dll 「」顯然存在,並沒有失蹤。

爲了避免註冊表中缺少的東西,我想在32位模式構建的OpenSSL在Windows 8構建成功完成,並且應用程序沒有錯誤正確鏈接。當我運行應用程序時,我又收到了同樣的錯誤信息。

然後我試圖建立其基於以下步驟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 

在這種情況下,我生成過程中收到了很多警告的大多是「數據轉換和數據丟失的可能性」,但它是建立和而「測試」失敗「安裝」生成的輸出。

現在,當我嘗試使用新的「libeay64.lib和ssleay64.lib」建立我在Visual Studio解決方案我收到數千差不多的錯誤說「無法解析的外部符號」

所以,如果可能的話,請回答以下問題;

  1. 爲什麼我無法在Windows 8(64位)上運行我的32位應用程序?
  2. 爲什麼在Windows 8上正確構建OpenSSL的(32位模式),還是 遇到同樣的錯誤?
  3. 在OpenSSL構建(64位模式),我做錯了什麼?

我使用OpenSSL的版本1.0.1e的Visual Studio 2012NASM 07年10月2日

感謝

回答

1

我部分地回答你的問題:

你可以在WOW64的64位下運行32位。

對於在64位的OpenSSL,有一個編譯器選項/下視覺工作室這意味着治療警告作爲錯誤WX。從makefile中刪除該編譯器選項。你會得到很多警告。但是OpenSSL將被編譯。

因爲大多數模塊沒有編譯,並且它們的目標文件沒有生成,所以你得到了鏈接錯誤。請讓我知道它是否能解決您的問題。

+0

謝謝,我使用** perl **和** nasm **編譯OpenSSL源文件。我試圖找到這樣的選項(**/WX **),但我不能。事實上,我不使用Visual Studio來構建OpenSSL庫。我是否正確地得到你的答案?對於第二部分,顯然它會被編譯,但是當我嘗試在Visual Studio中將它鏈接時,我收到上述錯誤。 – anonim 2013-03-26 07:57:52

+0

在Makefile中查找/ WX。 – doptimusprime 2013-03-26 09:18:28