wince 6.0 匯出 支援MFC的SDK

來源:互聯網
上載者:User

要想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中添加中文字型。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.