作者:LoongEmbedded(kandi)
时间:2011.8.17
类别:WINCE系统开发
********************************LoongEmbedded********************************
基于WINCE6.0系统,根据PDA模板新建了工程之后,现把遇到的问题和解决的方法记录一下
1. 编译系统找不到atls.lib
这里要特别注意的是,发生类似这样的错误的时候,如果从\WINCE600\build.err文件来找错误的原因,很难,因为只有下面的信息:
F:\WINCE600\build.log(1) : error SYSGEN0000: error(s) in sysgen phase
这里只是告诉我们在sysgen阶段的时候出错,并没有告诉我们更有的出错信息,也就很难确定编译出错的原因,但我们可以从\WINCE600\buildl.og中获取更多有效的信息,如下:
Directory: F:\WINCE600\PUBLIC\SCRIPT\CESYSGEN
TARGETNAME: jscript
makefile.def: Including F:\WINCE600\public\common\oak\misc\sources.ReleaseType_OAK
NMAKE : fatal error U1073: don't know how to make 'F:\WINCE600\OSDesigns\sfck6410\sfck6410\Wince600\SMDK6410_ARMV4I\cesysgen\oak\lib\ARMV4I\retail\atls.lib'
Stop.
从上面的信息可以分析是在编译SCRIPT这部分的时候,找不到所以来的atls.lib这个库文件,而atls.lib对应于Active Template Library(ATL)这个组件,选上这个组件后就可以解决这个问题
图1
JScript是由微软公司开发的活动脚本语言,是微软对ECMAScript规范的实现,而ECMAScript是一种由欧洲计算机制造商协会(ECMA)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,但实际上后两者是ECMA-262标准的扩展。
活动模板库(ATL Active TEmplate Library),是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。如果网络开发人员需要跟踪客户的请求,那么可以编写通用网关接口(CGI common gateway interface)程序,如果网络服务器是微软公司的网络信息服务器(IIS internet information server),那么还可以在网页中嵌入脚本语言。这种网页称为ASP页面,后缀名称为.asp。在ASP页面中的脚本语言将会首先被服务器解释执行,然后传送到用户端。另外的一种方法是将脚本语言先编译为可执行文件,这种能够被编译为可执行文件的脚本程序通常是用C++这种面向对象的编程语言编写的。由于可编译程序的运行速度明显优于脚本程序,因此,网页的运行速度明显变快。由于C++程序同操作系统结合得更为紧密。,因此,利用ATL编写的网页还有更多的优点。不过,用C++写程序也要比写脚本语言程序用的复杂程度高,消耗时间也要来得长一些。
通过活动模板库,可以建立COM组件,然后通过ASP页面中的脚本对COM对象进行调用。微软公司称COM对象的运行速度更快,稳定程度也更强。这种COM组件可以包含属性页、对话框等等控件。
2. 解决了上面这个问题,接下来遇到编译系统找不到SDcardlib.lib的问题
BUILD: [01:0000005515:INFO ] Directory: F:\WINCE600\PLATFORM\SMDK6410\SRC\DRIVERS\WIFI_SDIO\WLAN
BUILD: [01:0000005516:INFO ] TARGETNAME: SDIO8686
BUILD: [01:0000005517:INFO ] makefile.def: Including F:\WINCE600\public\common\oak\misc\sources.ReleaseType_PLATFORM
BUILD: [01:0000005518:ERRORE] NMAKE : U1073: don't know how to make 'F:\WINCE600\OSDesigns\sfck6410\sfck6410\Wince600\SMDK6410_ARMV4I\cesysgen\oak\lib\ARMV4I\retail\SDcardlib.lib'
BUILD: [01:0000005519:INFO ] Stop.
由上面的信息可以判断,在编译SMDK6410\SRC\DRIVERS\WIFI_SDIO\WLAN的时候,编译系统提示找不到SDcardlib.lib,这说明WLAN的sources文件会用到SDcardlib.lib,选择了Device Drivers->SDIO->SDIO Memory->SD Memory组件就可以解决这个问题
图2
3. 解决了上面这个问题,接下来遇到编译系统找不到ddraw.lib的问题
BUILD: [00:0000006675:PROGC ] Building LINK Pass in F:\WINCE600\PLATFORM\SMDK6410\SAMPLES\MFC\MFC_DecodeDemo\MfcDemo\ directory.
BUILD: [01:0000006689:ERRORE] NMAKE : U1073: don't know how to make 'F:\WINCE600\OSDesigns\sfck6410\sfck6410\Wince600\SMDK6410_ARMV4I\cesysgen\sdk\lib\ARMV4I\retail\ddraw.lib'
BUILD: [01:0000006691:ERRORE] NMAKE.EXE TargetExeFiles -i -c BUILDMSG=Stop. BUILDROOT=F:\WINCE600\PLATFORM\SMDK6410 CLEANBUILD=1 LINKONLY=1 NOPASS0=1 failed - rc = 2
由上面的信息可以判断,在编译SMDK6410\SAMPLES\MFC\MFC_DecodeDemo\MfcDemo的时候,编译系统提示找不到ddraw.lib,这说明WLAN的sources文件会用到ddraw.lib,选择了Core OS->Graphics and Multimedia Technologies->Graphics->DirectDraw组件就可以解决这个问题
图3
这样就可以解决了编译出错的信息,后面就可以基于这个工程文件来根据我们系统所需的功能来添加相应的组件了。