[轉]VS2013編譯64位OpenSSL


安裝ActivePerl

這個沒什么好說的,直接運行msi即可。

編譯OpenSSL

1.使用Visual Studio Tool中的“VS2013 x64 本機工具命令提示”來打開控制台;也可以打開一個控制台,然后進到“安裝路徑\Microsoft Visual Studio 12.0\VC\bin\amd64\“中運行vcvars64.bat;

2.解壓下載下來的openssl的壓縮包,進入解壓文件夾,輸入命令:perl Configure VC-WIN64A;

3.輸入命令ms\do_win64a;

4.輸入命令nmake –f ms\nt.mak開始編譯,如需要dll則命令為nmake –f ms\ntdll.mak(如果前面沒有配置好發現使用了32bit的nmake,可使用絕對路徑使用“安裝路徑\Microsoft Visual Studio 12.0\VC\bin\amd64\nmake.exe”);

5.如編譯成功,可使用nmake –f ms\nt.mak test來測試。

PS:如果需要編譯32bit的,第一步使用x86的控制台,二三步中改為VC-WIN32和ms\do_ms。

配置VS

1.項目->屬性->配置屬性->VC++ 目錄->包含目錄,將openssl文件夾的inc32添加進去;項目->屬性->配置屬性->VC++目錄->庫目錄,添加openssl文件夾下的out32dll;

2.項目->屬性->配置屬性->鏈接器->輸入->附加依賴項,增加libeay32.lib和ssleay32.lib;

3.將out32dll中的libeay32.dll和ssleay32.dll拷貝至工程目錄下。

 

編譯當中遇到的錯誤和解決辦法

 

OpenSSL編譯的時候提示少了strings.h頭文件

修改這個文件

crypto/o_str.c

 

#if !defined(OPENSSL_IMPLEMENTS_strncasecmp) && \

!defined(OPENSSL_SYSNAME_WIN32) && \

!defined(NETWARE_CLIB)

# include <strings.h>

#endif

 

這個編譯開關定義了就可以了

定義的方法在nt.mak  這個文件中的CFLAG 將-DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN 

這兩個宏加進去

 

還有一個重復定義的問題,這樣也可以一並解決

鏈接錯誤

 

link /nologo /subsystem:console /opt:ref /debug /dll /out:out32dll\libea
y32.dll /def:ms/LIBEAY32.def @C:\Users\Unst\AppData\Local\Temp\nm75AD.tmp
bn-586.obj : error LNK2005: _bn_sub_part_words 已經在 bn_mul.obj 中定義
正在創建庫 out32dll\libeay32.lib 和對象 out32dll\libeay32.exp
mem.obj : error LNK2001: 無法解析的外部符號 _cleanse_ctr
mem.obj : error LNK2001: 無法解析的外部符號 _cleanse_ctr
out32dll\libeay32.dll : fatal error LNK1120: 1 個無法解析的外部命令
NMAKE : fatal error U1077: “"D:\Program Files\Microsoft Visual Studio 10.0\VC\B
IN\link.EXE"”: 返回代碼“0x460”
Stop.
原因:之前因為沒有注意輸入命令的大小寫,影響了后面的編譯。
辦法:刪了OpenSSL目錄,再來一遍。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM