最近在做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的目录,要全部选可有好几百兆呢。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chinesedragon2010/archive/2010/07/22/5756581.aspx