解决WINCE6.0新建工程编译出错的问题
作者: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
這樣就可以解決了編譯出錯的信息,后面就可以基于這個工程文件來根據我們系統所需的功能來添加相應的組件了。
總結
以上是生活随笔為你收集整理的解决WINCE6.0新建工程编译出错的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于WINCE6.0+S3C6410的背
- 下一篇: WINCE6.0在控制面板添加控制面板应