当前位置: 代码迷 >> WinCE >> 怎么导出wince6.0的SDK 添加MFC支持
  详细解决方案

怎么导出wince6.0的SDK 添加MFC支持

热度:62   发布时间:2016-04-28 12:59:07.0
如何导出wince6.0的SDK 添加MFC支持

如何导出wince6.0的SDK 添加MFC支持
2010年12月13日
  最近在做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下载到。
  相关解决方案