VS2005編譯Openssl-1.1.0f

0 前言

本文是在Windows系統中用VS2005編譯Openssl-1.1.0f,注意是VS2005而非VS2015。如果用VS2015編譯,請閱讀:《VS2015編譯Openssl-1.1.0f》  。

因爲項目需要在VS2005中搭建工程使用Openssl靜態庫,但通過之前用《VS2015編譯Openssl-1.1.0f》中的方法編譯成功靜態庫 ,在VS2015中在可以使用,但在VS2005中就會報錯。原因是用VS2015編譯的庫,在VS2005中使用,這種混合式用法會不通過。但沒關係,編譯方法一樣嘛,在VS2005裏再重新編譯一次就行了嘛。So,just do it。Howerver,errors come out。


經過不斷摸索和Lucas前輩的指導,終於發現原因,找到解決方法,編譯成功。故記錄之,以備忘,同時,避免後來人踩坑。

1 VS2005編譯win32 release版本

使用 VS2005 下的 Visual Studio 2015 Command Prompt 進入控制檯模式。
依次使用以下命令:
cd /d  C:\openssl-1.1.0f  
perl Configure VC-WIN64A  shared no-asm -D_WIN32_WINNT=0x0501 --prefix="C:/openssl-1.1.0f/win32-release" --openssldir="C:/openssl-1.1.0f/win32-release/ssl"  
nmake  
nmake test  
nmake install  
nmake clean  

注意:與《VS2015編譯Openssl-1.1.0f》 不同的是,加入了-D_WIN32_WINNT=0x0501參數。這是因爲之所以出現上面截圖中的錯誤,是由於Openssl使用了一些新版本的API,導致缺少相應庫的鏈接,而這些功能是依賴於你的操作系統的版本的。但你的頭文件中的定義並不是最新的,因此,需要定義使用的操作系統的版本。

2 VS2005和VS2015編譯Openssl-1.1.0f的異同

a)相同點

(1)準備工作相同。
(2)編譯方法步驟相同。
(3)編譯64位時,編譯過程一樣,不會出錯。

b)不同點

(1)VS2015編譯Openssl的32位和64位都在Visual Studio 2015 Command Prompt控制檯模式下編譯;而VS2005編譯32位是用Visual Studio 2005 Command Prompt控制檯模式,但編譯64位則是用Visual Studio 2005  x64 Win64 Command Prompt控制檯模式下編譯。
(2)編譯32位時,用VS2005時nmake出錯,是因爲缺少一個相應的庫,因此,nmake前需要將相應的庫配置進去。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章