環境:win7 64位, vs2005, wince6
一 首先配置好WCECOMPAT
要編譯CE版本的OpenSSL的話,需要WCECompat這個庫,這個庫實現了許多在Desktop開發環境中有而在CE中沒有的功能,而這些功能是編譯與使用OpenSSL所必需的
它相當於一個第三方的橋樑, 如果你的wince工程中要引用一些第三方的庫,比如openssl, cURL等
1 設定環境變數, 把下面的內容儲存成一個bat檔案,比如script.bat
set OSVERSION=WCE600
set TARGETCPU=ARMV4I
set PLATFORM=VC-CE
set PATH=C:/Program Files (x86)/Microsoft Visual Studio 8/VC/ce/bin/x86_arm;C:/Program Files (x86)/Microsoft Visual Studio 8/VC/bin;C:/Program Files (x86)/Microsoft Visual Studio 8/VC/PlatformSDK/bin;C:/Program Files (x86)/Microsoft Visual Studio 8/Common7/Tools;C:/Program
Files (x86)/Microsoft Visual Studio 8/Common7/IDE;C:/Program Files (x86)/Microsoft Visual Studio 8/Common/Tools;C:/Program Files (x86)/Microsoft Visual Studio 8/Common/IDE;C:/Program Files (x86)/Microsoft Visual Studio 8/;$(FrameworkSDKDir)Bin;%PATH%
set INCLUDE=C:/Program Files (x86)/Microsoft Visual Studio 8/VC/ce/include;C:/Program Files (x86)/Windows CE Tools/wce600/353_SDK/Include/ARMV4I;C:/Program Files (x86)/Windows CE Tools/wce600/353_SDK/Include;C:/Program Files (x86)/Microsoft Visual Studio 8/VC/ce/atlmfc/include;C:/Program
Files (x86)/Microsoft Visual Studio 8/SmartDevices/SDK/SQL Server/Mobile/v3.0
set LIB=C:/Program Files (x86)/Windows CE Tools/wce600/353_SDK/Lib/ARMV4I;C:/Program Files (x86)/Microsoft Visual Studio 8/VC/ce/atlmfc/lib/ARMV4I;C:/Program Files (x86)/Microsoft Visual Studio 8/VC/ce/lib/ARMV4I
set WCECOMPAT=C:/wcecompat
這個要根據自己的電腦實際情況配置. 把script.bat隨便拷貝到一個目錄下,比如c盤根目錄. 然後啟動Visual Studio 2005命令提示(開始菜單),並運行上面的這個指令碼,編譯環境就算是準備好了.
2 編譯WCECOMPAT
把下載的壓縮包解壓到c盤根目錄, :
http://github.com/mauricek/wcecompat/tree/master
進到目錄下, 修改一個源碼檔案src/time.c,在其中找到函數_tzset的定義,這是一個空函數,把它整個注釋掉(或刪掉),不然在後面我們的程式要連結這個庫的時候,會報這個函數重複定義的錯。
用命令列進到C:\wcecompat目錄下, 執行perl config.pl, 產生makefile檔案.
然後要手動改一下,刪掉或注釋掉其中的``src/winmain.cpp \''這一行,不然後面鏈進我們的程式時會報找不到WinMain所需的main函數這個錯.
然後運行命令
C:\wcecompat>nmake
完成之後會在lib目錄中產生兩個庫檔案wcecompat.lib和wcecompatex.lib,兩個靜態連結庫。
3 測試
到這裡,可以先進行一個初步的測試. 可以建一個2005的wince工程,在additional dependencies裡加入上面兩個庫,並
在additional library directories加入路徑C:\wcecompat\lib。
然後編譯,應該不會報錯.
4 編譯openssl庫
編譯wince下面的openssl庫非常繁瑣,而且我用網上各種方法嘗試後,總是有各種各樣的錯誤,始終得不到如下四個檔案:
ssleay32.lib
ssleay32.dll
libeay32.lib
libeay32.dll
不過好在在csdn上看到有編譯好的wince下的這四個檔案,下載下來,編譯用lib, 運行用dll, 可以用.