程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Windows 編繹OpenSSL雜記,編繹openssl雜記

Windows 編繹OpenSSL雜記,編繹openssl雜記

編輯:C++入門知識

Windows 編繹OpenSSL雜記,編繹openssl雜記


Window 下 OpenSSL 編繹過程

1. 下載 ActivePerl-5.12.4.1205  , openssl-0.9.8 , 配置Perl環境變量 , 解壓openssl-0.9.8
2. 進入 CMD ,進入VS2008 / VS2010 命令提示界面. 執行: vcvarsall.bat
3. CD 切入 進入 openssl-0.9.8 解壓目錄 ,  執行  perl Configure VC-WIN32
4. 執行 ms\do_ms
5. 修改編譯參數 進入 ms\nt.mak 及 ms\ntdll.mak 移除參數 : /WX /G5
6. 執行 nmake -f ms\ntdll.mak (動態庫) 或者 nmake -f ms\nt.mak (靜態庫)
本人編繹結果是: VS2010編繹 nmake -f ms\ntdll.mak 通過 , VS2008 編繹 nmake -f ms\nt.mak 通過
其中 VS2008 ntdll.mak 編繹通過,但運行異常。
7. cd out32dll 或 cd out32 切入輸出目錄,執行命令 ..\ms\test
結果: passed all tests 編繹成功。



配置開發環境,以 VS2008 為例:
1.工具->選項->項目和解決方案->VC++ 目錄 添加兩項:
    1.下拉列表切換至 包含文件 增加路徑 為 OpenSSL解壓路徑下的 include 目錄。
    2.下拉列表切換至 庫文件 增加路徑 為編繹後 outdll 目錄 或out32dll 目錄。

2.項目->屬性 對話框 , 配置屬性 -> 鏈接器 -> 命令行 添加  ssleay32.lib libeay32.lib 保存,也可取消該步驟,在代碼文件中引入
#pragma comment(lib, "ssleay32.lib")
#pragma comment(lib, "libeay32.lib")

完成後,即可進入下一步代碼調用 , 如果仍出現運行異常,嘗試 項目->屬性 對話框 , 配置屬性 -> C/C++ -> 代碼生成 運行庫 切換為 多線程 DLL (/MD) , 因為OPENSSL 默認編繹 選擇 /MD 模式。

補充一點,本人VS2008編繹  nmake -f ms\ntdll.mak 模式 代碼無法正常運行 , 切換到 nmake -f ms\nt.mak 方式編繹 恢復正常運行。

編繹之後 Debug 模式在XP環境運行異常,原因是 XP環境中沒有Debug 運行庫環境,切換Release方式編繹可運行。

VS2010 之前 DLL有 程序清單配置,這個在 VS2010之後取消了。有時不同的運行環境庫如VC90環境與VC100 不同編繹DLL混合運行會報錯,可參考靜態編繹。

檢查運行環境清單:
項目->屬性 對話框 , 配置屬性 -> 清單工具 -> 輸入和輸出 嵌入清單 選否 , 如此,下次編譯時,會生成同名的:  .manifest 後綴文件。

為了避免不必要麻煩, 如果 VS2008 做為開發環境,就用 VS2008做為DLL編繹環境,同理 VS2010 一樣。



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved