如何導出wince6.0的SDK

最近在做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的目錄,要全部選可有好幾百兆呢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章