wince 6.0 导出 支持MFC的SDK

要想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

wince 6.0 导出 支持MFC的SDK_第1张图片
可以改名,并且填写必要的信息。

    最重要的是在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

如图:

wince 6.0 导出 支持MFC的SDK_第2张图片

另外,需要用仿真器调试,或者你在编译部署MFC的时候有如下错误提示:

 

1>设备未准备好。如果目标是 ActiveSync 设备,请验证 ActiveSync 连接是否在运行。
1>
1>连接到设备失败。
1>
========== 部署: 0 已成功, 1 已失败, 0 已跳过 ==========

在Emulator中,将Configuration修改为Device Emulator ARMV4I Debug,或者Device Emulator ARMV4I Release

填写模拟器的信息后点击确定。在这里内存:128M,宽:480,高:600,16位色显示。

wince 6.0 导出 支持MFC的SDK_第3张图片

OK,这样使用“build all sdks...” 生成的SDK大小为20M左右。

 但是这样生成的SDK还有一个问题,不支持中文显示,中文显示为一个一个口口。

解决此问题需要在SDK中添加中文字体。

你可能感兴趣的:(exception,OS,mfc,Build,include,WinCE)