EVC(Embedded Visual C++)是微软公司推出的针对Windows CE嵌入式系统的应用程序开发工具,目前版本发展到EVC 4.0 SP4,支持到WinCE 5.0版本。

EVC 4.0具有如下特点:

  1. 网上资料少,但是可以通过VC++移植。
  2. 编程复杂,继承了VC++的光荣传统。
  3. 调试困难,模拟器支持差,微软的一贯作风。

基于不完全统计的以上几点,微软在放弃了EVB(Embedded Visual Basic) 4.0后,决定再放弃EVC的后续版本开发,所有的嵌入式开发将整合到Visual Studio 2005 .NET中,完成历史性的统一。

虽然如此,鉴于现在.NET 2.0平台的如此不完善(连WinCE 5.0还只附带.NET Compact Framework 1.0,没比WinCE 4.2进步多少,在Platform Builder中加入.NET 2.0后系统居然无法启动),使用VS 2005 .NET(主打.NET 2.0)开发程序还是较为困难,只好忍痛放弃VS .NET,投奔到EVC的怀抱。

初学EVC,在反复的尝试之后,总结出一点点心得:

首先,我们新建一个工程,注意在CPUs的选择上,除了把要用的CPU钩选上,别忘了钩选emulator,在本机模拟器(WinCE 5.0WinCE 4.2)调试时要用到它。

下一步,确定MFC是共享DLL还是静态链接库,如果WinCE的镜像不带MFC,那么这里必须设置成静态的,不过最好还是在Platform Builder把WinCE的镜像中加上MFC这个feature,静态的总是不好,这个设置可以在Project Settings里面改。

然后就一路Next,都完成后,进入了EVC的编辑界面。首先,我们要让程序支持中文。在VC++中,可以直接在向导中选择中文,可是EVC就比较扯淡,只能在这里重新设置一遍。

还有这里,所有的窗体都要设置成Chinese(P.R.C)。

如果程序用到了外部的链接,需要在这里设置,并且要万分注意的是,对于每个编译项目这些设置都是独立的,所以每一个编译平台(例如Debug,Release)都要重新做这些设置(包括语言设置)。

基本设置完成之后,就可以开始像VC++一样编程了。

如果我是从网上下载的程序,在开始向导时没有钩选我用的CPU怎么办呢?

比如这个程序,它只钩选了ARMV4和emulator,于是在WinCE 4.2下的SDK中,有如下四个平台:

但是当我把环境改成WinCE 5.0时,会发现ARMV4的两项没了,这是因为WinCE 5.0只支持ARMV4I。

这样我们就要手动添加ARMV4I到程序编译环境中。在Build的Configurations中选择Add。

然后手动把ARMV4I的Debug和Release都添加进去。

注意在这个Copy settings from中,不要选择Default Configurations,不然会有我也无法解释的错误。

这样,就可以在编译平台中看到新的CPU了。

不过还没完,因为我们是拷贝的别的平台的设置,所以新的平台编译肯定是会有问题的,果然,问题出来了:

 --------------------Configuration: PocketLian - Win32 (WCE ARMV4I) Debug--------------------
Compiling resources...
Compiling...
Command line warning D4002 : ignoring unknown option '/Gs8192'
StdAfx.cpp
Compiling...
Command line warning D4002 : ignoring unknown option '/Gs8192'
PocketLian.cpp
PocketLianDlg.cpp
Generating Code...
Linking...
.\ARMV4IDbg\PocketLian.obj : fatal error LNK1112: module machine type 'ARM' conflicts with target machine type 'X86'
Error executing link.exe.

PocketLian.exe - 1 error(s), 2 warning(s)

 

根据错误提示,我们找到设置中的Link,把这个conflict的machine改成ARM。

再次编译,还是有问题:

--------------------Configuration: PocketLian - Win32 (WCE ARMV4I) Debug--------------------
Compiling resources...
Compiling...
Command line warning D4002 : ignoring unknown option '/Gs8192'
StdAfx.cpp
Compiling...
Command line warning D4002 : ignoring unknown option '/Gs8192'
PocketLian.cpp
PocketLianDlg.cpp
Generating Code...
Linking...
MFCCE400d.lib(mfcce400d.dll) : fatal error LNK1112: module machine type 'THUMB' conflicts with target machine type 'ARM'
Error executing link.exe.

PocketLian.exe - 1 error(s), 2 warning(s)

 

有完没完!Innocent只好再改一次。

这一次就好了,同样地,你需要把每一个平台的设置都给改了,这个Release就成功了:

--------------------Configuration: PocketLian - Win32 (WCE ARMV4I) Release--------------------
Compiling resources...
Compiling...
Command line warning D4002 : ignoring unknown option '/Gs8192'
StdAfx.cpp
Compiling...
Command line warning D4002 : ignoring unknown option '/Gs8192'
PocketLian.cpp
PocketLianDlg.cpp
Generating Code...
Linking...

PocketLian.exe - 0 error(s), 2 warning(s)
Downloading files

 

这样,别人的劳动果实就可以在自己的板子上跑起来了。

posted on 2009-03-05 13:24  陈广强  阅读(1766)  评论(1编辑  收藏  举报