網(wǎng)上方法很多,大部分是針對32位機(jī)的,自己的電腦因?yàn)槭莣in7,64位,摸索了很久才安裝成功.
?
環(huán)境
WIN7, 64位,?vs2010?
下載ActivePerl
配置過程中需要生成一些mak文件,這些生成代碼用perl腳本生成,所以要安裝一個(gè)ActivePerl.
?
網(wǎng)址:?http://www.activestate.com/activeperl/
?
我下載了兩個(gè)版本:
?
[css]?view
plain?copy
?ActivePerl-5.16.2.1602-MSWin32-x64-296513.msi??
ActivePerl-5.16.2.1602-MSWin32-x86-296513.msi??
裝的是第一個(gè)版本,64位的。
編譯的doc都是在vs的命令提示符里面,否則會出錯(cuò)
下載openssl
網(wǎng)址?http://www.openssl.org/
我用的是openssl-0.9.8g版本,解壓到c盤根目錄。
?
安裝步驟:
(可以參照openssl目錄下的install.win32)
1打開命令行
進(jìn)入openssl源碼目錄。
cd c:/openssl-0.9.8.g
執(zhí)行perl Configure VC-WIN32
?
2在c:/openssl-0.9.8.g目錄運(yùn)行msdo_ms
另外兩種方式如果使用也必須保證本機(jī)有編譯器才能使用。
:msdo_masm(默認(rèn)vc自帶的編譯器;也也以自己下載安裝)
:msdo_nasm(需要自己下載)
?
3?DOS窗口轉(zhuǎn)到C:Program FilesMicrosoft Visual Studio2010 VC98bin目錄(就是VC或VS對應(yīng)的目錄,你電腦可能有差異)
執(zhí)行vcvars32.bat以配置環(huán)境變量.成功后顯示如下:
?
4、跳到openssl目錄下,編譯動(dòng)態(tài)鏈接庫
cd c:/openssl-0.9.8.g
執(zhí)行?>nmake -f msntdll.mak
?
如果編譯成功,輸出在out32dll目錄下:包括可執(zhí)行文件、兩個(gè)dll和兩個(gè)lib文件: libeay32.dll, libeay32.lib, ssleay32.dll,ssleay32.lib
如果遇到"ml不是內(nèi)部或外部命令"這樣的錯(cuò)誤,找到你電腦里的ml.exe文件拷貝到當(dāng)前目錄重新執(zhí)行即可。
?
這里要特別強(qiáng)調(diào)一下,這種方法生成的是動(dòng)庫鏈接庫, 也就是我們的應(yīng)用工程如果要使用openssl, 編譯時(shí)要指定
lib文件,程序發(fā)布時(shí)要用到相應(yīng)的dll. 我遇到過一種情況是, 在win7下發(fā)布的使用openssl的程序無法運(yùn)行,彈出
“運(yùn)行時(shí)初始化相關(guān)的錯(cuò)誤”, 但是在xp下編譯,發(fā)布,在其它win7和winXP上都能運(yùn)行. 估計(jì)是win7下沒配置好,導(dǎo)致只能本機(jī)編譯,運(yùn)行,無法發(fā)布.
?
如果要把openssl編譯成靜態(tài)的庫,只要把上面的ntdll.mak換成nt.mak就可以了,我試著用了一個(gè)靜態(tài)的庫,發(fā)現(xiàn)要解決很多編譯時(shí)的兼容,沖突問題,建議不要使用靜態(tài)方法.
下面來測試一下。
建立工程
打開vs20010
在additionalinclude directories加上
"C:openssl-0.9.8ginclude"
這個(gè)目錄.
?
在additionallibrary directories加上
"C:openssl-0.9.8gout32dll"
這個(gè)目錄
?
代碼類似下面這樣:
[cpp]?view plain?copy ?#include