导出wince6.0的SDK 并且添加MFC支持

来源:互联网 发布:each遍历json对象二重 编辑:程序博客网 时间:2024/05/19 20:43
 

参照http://blog.csdn.net/happenhappy/archive/2010/05/28/5630930.aspx

以及http://www.cnblogs.com/we-hjb/archive/2008/07/30/1256838.html

 


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

 

 

转载自:http://bbs.ednchina.com/BLOG_ARTICLE_1823481.HTM