天天看點

如何導出wince6.0的SDK 添加MFC支援

最近在做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