要想SDK支援MFC需要做一下工作:
1)必需先編譯通過自己的OS Design工程
a.在Catalog Items
View中選擇自己要添加到OS Design中的組件
在這裡有一點很重要,開啟Catalog
Items View,尋找C++ Runtime Support for Exception Handling and Runtime
Type Information 項,在前面打鉤
。
否則在產生SDK之後,用此SDK上的MFC程式會出現很多的 LINK
錯誤,但是編譯不會出錯:
error LNK2001: unresolved external symbol
"const type_info::`vftable'" (??_7type_info@@6B
@)
error LNK2001 : unresolved external symbol
___CxxFrameHandler
等等。。。 error LNK2001的錯誤
為了這個問題找了一個下午,終於在一篇文章裡看到了答案,
http://topic.csdn.net/u/20081106/16/4bdaf614-3135-41a4-8777-c513ba0449c0.html
b.將../Program
Files/Microsoft Visual Studio 8/VC/ce/Dll/armv4i下的有關MFC的
DLL拷貝到目錄..:/WINCE600/PLATFORM下,當然也可以放到你認為可以放的目錄下,然後配置你OS
Design中所選擇了BSP中的platform.bib
,在你所用的BSP檔案夾中搜尋platform.bib,然後用記事本開啟,編輯
我的配置如下:
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
這裡(_PLATFORMROOT)就是 ..:/WINCE600/PLATFORM
c.重新編譯OS
產生SDK的過程比較容易,但是產生之後的可用效果就再說了。
1,首先 在上文的WINCE 6.0 OS的項目中,點擊 項目 | Add New 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
另外,需要用模擬器調試,或者你在編譯部署MFC的時候有如下錯誤提示:
1>裝置未準備好。如果目標是 ActiveSync 裝置,請驗證 ActiveSync
串連是否在運行。
1>
1>串連到裝置失敗。
1>
========== 部署: 0 已成功, 1 已失敗, 0 已跳過 ==========
在Emulator中,將Configuration修改為Device Emulator ARMV4I Debug,或者Device
Emulator ARMV4I Release
填寫模擬器的資訊後點擊確定。在這裡記憶體:128M,寬:480,高:600,16位色顯示。
OK,這樣使用“build all sdks...” 產生的SDK大小為20M左右。
但是這樣產生的SDK還有一個問題,不支援中文顯示,中文顯示為一個一個口口。
解決此問題需要在SDK中添加中文字型。