最近在做WINCE6.0系統的編譯和SDK的導出。但是我導出的SDK大小隻有5M多,這個與以往WINCE5.0中導出的SDK要小了很多,之前我在WINCE5.0中導出的SDK大約有25M左右。查找了一通最後發現原來6的系統較5的系統有了一些改變,至少在MFC支援上有了變化。在6的系統中,導出對應OS design的SDK時,不會包含對MFC DLL的,要手工将MFC的DLL加入OS iamge中,在導出SDK時要手工将支援MFC的頭檔案和lib庫包含到SDK中。
那麼如何做了?
(1)必需先編譯通過自己的OS Design工程
a.在Catalog Items View中選擇自己要添加到OS Design中的元件
b.将../Program Files/Microsoft Visual Studio 8/VC/ce/Dll/armv4i下的有關MFC的 DLL拷貝到目錄..:/WINCE600/PLATFORM下,當然也可以放到你認為可以放的目錄下,然後配置你OS Design中所選擇了BSP中的platform.bib .
c.重新編譯OS
我的配置如下:
MODULES
; Name Path Memory Type
; ---------- ---------------------------------- -----------
;-------------------------------------------------------------------------------
;Inorder support MFC and include the MFC dll
MFC80CHS.DLL $(_PLATFORMROOT)/MFC80CHS.DLL NK SHK
MFC80CHT.DLL $(_PLATFORMROOT)/MFC80CHT.DLL NK SHK
MFC80DEU.DLL $(_PLATFORMROOT)/MFC80DEU.DLL NK SHK
MFC80ENU.DLL $(_PLATFORMROOT)/MFC80ENU.DLL NK SHK
MFC80ESP.DLL $(_PLATFORMROOT)/MFC80ESP.DLL NK SHK
MFC80FRA.DLL $(_PLATFORMROOT)/MFC80FRA.DLL NK SHK
MFC80ITA.DLL $(_PLATFORMROOT)/MFC80ITA.DLL NK SHK
MFC80JPN.DLL $(_PLATFORMROOT)/MFC80JPN.DLL NK SHK
MFC80KOR.DLL $(_PLATFORMROOT)/MFC80KOR.DLL NK SHK
MFC80U.DLL $(_PLATFORMROOT)/MFC80U.DLL NK SHK
MFC80UD.DLL $(_PLATFORMROOT)/MFC80UD.DLL NK SHK
(2)通過Project->Add New SDK...建立一個SDK工程
進行一些配置,最重要的是在Additional Folders項中添加我們要添加的一些頭檔案,lib庫檔案以及源檔案。
要添加了檔案所在位置,如下:
mfc頭檔案:
../Program Files/Microsoft Visual Studio 8/VC/ce/atlmfc/include
LIB檔案:
../Program Files/Microsoft Visual Studio 8/VC/ce/atlmfc/lib/armv4i
源檔案:
../Program Files/Microsoft Visual Studio 8/VC/ce/atlmfc/src
上面的這些都是“源路徑”那麼“Target路徑”呢?“目标路徑”都寫的是相當路徑,都是相對于如下路徑的路徑:
../WINCE600/OSDesigns/NavDar/NavDar/SDKs/SDK2/obj/你自己配置的SDK名稱
相對路徑我們都設定成如下:
mfc頭檔案:
mfc/include
LIB檔案:
mfc/lib/armv4i
源檔案:
mfc/src
OK,這樣使用“build all sdks...” 生成的SDK大小為18M左右。
參考博文:
http://www.yfeshop.cn/html/NETboke/200811/danjidajianWinCEkaifahuanjing_3362.html
這兩天在調試RMC程式,這是一個WinCE下的“遠端桌面”程式。由于在機關沒有時間調,是以隻能回家做,可家裡又沒實驗闆。好在Windows CE是有模拟器的,可以用模拟器代替實驗闆進行程式的調試。即便如此,還是碰到了一些問題,不過都一一解決了,寫出來跟大家分享一下。
最早主機上已經安裝了EVC4+SP4,VS2005+SP1+Platform Builder6.0+R2等 Windows CE的主要開發工具。既然沒有實驗闆,那就定制一個中文的WinCE6.0的作業系統,再導出SDK,這不就解決了闆子的問題嗎?
思路是對了,可一動手就發現有問題。PB6.0中已經沒有對MFC的支援。而目前很多程式都是基于MFC的,這要調試MFC的程式可怎麼辦?想了一想,系統要支援MFC,其實就是要幾個DLL,把MFC相關的幾個DLL加到NK.bin中不就行了?在Program Files/Microsoft Visual Studio 8/VC/ce/Dll/armv4的目錄下找到了幾個跟MFC相關的DLL。看來微軟還沒有徹底抛棄MFC,隻是想讓大夥少用。把這幾個DLL拷貝到BSP對應的目錄下,并修改platform.bib檔案。第一個問題順利解決。MFC加進去了,.NET Compact Framework那更是必須選上的,留條後路。^_^
為了讓系統支援ActiveSync,在CATALOG裡添加了相應的元件,這比較簡單。問題是系統啟動後得自己去建立一個連接配接,還要修改”PC連接配接”的選項才能用。不能這麼麻煩,想個辦法解決一下。建立好連接配接後,用驅動調試助手把對應的系統資料庫資訊導出來,放到platform.reg裡去,這樣重新編譯完的系統就能直接使用ActiveSync了。需要說明一下的是,在使用時需要設定主機上的ActiveSync,讓其支援DMA的連接配接方式。
到這裡,終于完成了系統的定制。編譯下載下傳測試,基本達到了預期效果。接下來該導出SDK了。在導SDK的過程中發現MFC也沒有相關選項的支援。這不又麻煩了,導出的SDK不能支援MFC,雖然VS2005支援使用MFC編寫裝置的程式。得想辦法把MFC加進來。還是在Program Files/Microsoft Visual Studio 8/VC/ce/的目錄下面有一個atlmfc的目錄。這裡面包括了MFC對應的頭檔案和庫。在定制SDK的屬性頁Additional Folders中添加相關的項,最後編譯安裝,測試一切正常。注意在添加MFC時隻選擇armv4I的目錄,要全部選可有好幾百兆呢。
至此,我們就在單機上搭建好了完整的Windows CE的開發環境,不光是裝了很多開發軟體,連硬體都有了!很多想學Windows CE開發的學生就不用費心費力費錢去選闆子,暫時用模拟器做入門的學習也是個不錯的選擇。
這裡http://files.cnblogs.com/we-hjb/WINCE6.0CHSEMU.rar有WinCE6.0中文模拟器SDK的使用方法和實驗的效果。
最後說明一下,Device Emulator為我們提供的Shared Folder可以實作檔案共享,網絡也沒有問題,甚至序列槽列印資訊都可以用text consol window來模拟。我們可以直接用VS2005來調程式,也可以用EVC來編寫程式,通過檔案共享放到WinCE6.0的模拟器中去執行,添加列印資訊的調試方法在這裡也可以使用。另外,文中定制的SDK可以在這裡http://download.csdn.net/source/563215下載下傳到。
本文來自CSDN部落格,轉載請标明出處:http://blog.csdn.net/happenhappy/archive/2010/05/28/5630930.aspx