如何导出wince6.0的SDK 添加MFC支持

最近在做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+SP4VS2005+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的目录,要全部选可有好几百兆呢。

如何导出wince6.0的SDK 添加MFC支持_第1张图片

至此,我们就在单机上搭建好了完整的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下载到。

你可能感兴趣的:(windows,OS,mfc,dll,开发工具,WinCE)