WinCE工控主板开发常见问题

 2016-11-7         

开发工具选择


  英创嵌入式主板,预装操作系统可以分为WinCE5.0、WinCE6.0、WEC7、WEC2013,不同主板适用的开发工具不同,适用情况见下表。


型号操作系统支持的开发平台
 EM9X60系列,EM9161, EM9000 WinCE5.0 EVC(推荐),VS2005,VS2008
 EM9170,EM928x系列 WinCE6.0 VS2005,VS2008(推荐)
 ES9281 WinCE6.0 VS2005,VS2008(推荐)
 ESMARC928x系列 WinCE6.0 VS2005,VS2008(推荐)
 EM335x系列 WEC7 VS2008
 ESMARC335x系列 WEC7 VS2008
 ESM6802 WEC7 VS2008
 EM335x WEC2013版 WEC2013 VS2013

  注:如果采用C#进行WinCE6.0主板的程序开发,建议使用VS2008英文版。不推荐使用VS2005进行开发,部分系统可能因为.net cf版本问题造成开发不便。


  请使用对应的开发工具进行开发,对每个版本的WINCE微软一般只在一个版本的VS下提供了开发支持,VS2010,VS2011,VS2012并不支持WINCE开发。


  WEC2013相对之前版本变化太大,取消桌面对程序调试造成很大不便,同时界面程序开发难度增大。音频,视频,打印等功能支持困难,支持WEC 2013版本的第三方库也很少。我们目前不推荐使用WEC 2013作为首选开发平台。但是已经购买WEC 2013板卡的客户可以继续使用VS2013进行开发。


开发可能出现的问题


  1、VS2008下安装SDK报错

  如果在使用VS2008安装SDK时提示错误IHxFilters filter registration failure,该问题解决方案如下。


  1)在安装时选择部分安装


vs2008.gif


  2)然后再安装项目中去掉Documentation项即可正确安装


vs2008.gif


  此问题在安装有VS2005的开发机中不会出现。


  2、编译报错问题

  安装VISUAL STUDIO后需要打齐对应版本的SP补丁,否则在编译过程中可能报错导致编译失败。


  所有补丁均可以微软官网下载中心获得免费下载。


  3、程序部署报错,提示内存空间不足问题

  右键点击主板桌面“我的设备”,选择属性->内存,适当拖动滑动条,保证内存空间足够调试。


  或者在userinfo.txt中配置内存分配比,详情请参考开发光盘中《使用必读》。


  4、c#开发部署提示参数错误

  使用C#开发程序,在部署的时候,如果提示“正在部署‘C:\Program Files\Microsoft.NET\SDK\CompactFramework\v3.5\windowsce\diagnostics\NETCFv35.Messages.zh-CHS.cab’参数错误”,这是因为主板内.net cf环境为3.5英文版,如果是中文版VISUAL STUDIO,可能会尝试向板子安装3.5中文版,从而报错。


  解决办法是在工程属性中,去掉安装.net环境的勾选项。


vs2008.gif


  5、编译提示“lstrlenW”不是“ATL”成员错误


vs2008.gif


  该错误应为环境变量定义问题导致,微软在之后的补丁中修复了这个BUG。以下两种办法任选其一均可解决。

  1)打齐补丁,该错误将不再出现。

  2)可以找到该.h头文件,默认路径C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ce\atlmfc\include,将atlconv.h 第695行的

    inline int ocslen(_In_z_ LPCOLESTR x) throw() { return ATL::lstrlenW(x); }

    改成

    inline int ocslen(_In_z_ LPCOLESTR x) throw() { return wcslen(x) ; }


  6、编译提示C1023错误

  如果提示类似如下的预编译头报错的问题,可能是近期微软补丁开启了ASLR (address space layout randomization),而VS2005/VS2008并不支持该功能导致。


  c1xx : fatal error C1023: ‘xxxDebug\xxx.pch’ : unexpected error with pch, try rebuilding the pch


  1)在工程中禁用预编译功能可以绕过该问题


wince开发常见问题.gif


  2)取消预编译会增加编译时间,所以更推荐关闭ASLR功能

  打开开发PC的注册表,找到HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\MoveImages项,如果不存在,就新增这项,设置它的DWORD:0


wince开发常见问题.gif