WinCE 5 0邊做邊學 3

2021-03-31 08:57:00 字數 2101 閱讀 1758

主頁: 文斌程式網

我們重點要說的還是ce的生成過程,即你在編譯平台的時候platform builder到底為你做了些什麼?

實際上,ide在生成ce的過程當中共經歷了四個階段,分別是sysgen、build、copy、make,即元件生成階段,編譯階段,release資料夾複製階段和映象打包階段。下面我們就分階段來說明一下。

在public資料夾下是ce為我們提供的可用元件,我們定製自己的平台是通過platform builder做的選擇就是從這裡面選擇了一部分需要的元件。在這些資料夾中,包含了所有可用的庫檔案,標頭檔案,def檔案,當然也包括了所有可匯出的函式說明。在sysgen階段要做的就是從中選擇我們自己的平台需要的標頭檔案,庫檔案和匯出函式以建立我們自己平台需要的元件。它所完成的標頭檔案會以c++注釋的方式加以標記,這樣它就可以選擇需要的部分來匯出,最後把所有需要的庫進行鏈結就得到了我們自己平台所需要的東西了,它就放在wince500/pbworkspaces/%projectname%/wince500/%cpu_type%_x86/cesysgen資料夾下。

經過上一階段後,需要的標頭檔案庫檔案就準備好了,但這只是系統元件部分,我們的平台還有各種裝置驅動程式等其他的東西,這些就要在build階段來完成了。

整個build階段都是在圍繞著dirs檔案和sources檔案來進行,前者決定了哪些資料夾要被編譯,後者決定了哪些檔案要被如何編譯,也就是說,此階段要完成的就是各種源程式的編譯過程。下面我們就重點看一下這兩種檔案的內容。

dirs檔案可以在很多資料夾中找到,它列出了要參與編譯的子資料夾,內容大體如下:

dirs_ce=/

ceddk /

regenum /

pcibus /

這樣,build.exe在編譯的時候就可以通過它來逐層找到要參與編譯資料夾了。至於其中的optional_dirs、dirs_ntansi等專案的含義可以通過幫助查到。

同樣,sources檔案對參與編譯的源程式的編譯方式做了規定,例如通過targetname規定編譯後的名稱,通過targettype規定編譯的型別是exe,dll還是lib,通過dllentry規定dll檔案的入口點,通過includes規定編譯過程中需要的標頭檔案,通過sources規定參與編譯的原始檔等等。這些巨集的用法在幫助文件裡有更加明細的說明,在這裡只要理解這種編譯機制就可以了。

接下來,所有的編譯都有完成了,dll也好,exe也好,都是目標平台自有的了,下一步就是乙個copy過程,也就是將你的專案資料夾下的wince500資料夾下的內容複製到release資料夾下,這步就沒什麼可說的了。

最後一步就是打包了,即將已經準備好的目標平台的檔案打包成nk.bin這樣的作業系統映象檔案。在這個過程當中,乙個完成了檔案合併、登錄檔壓縮、資源檔案替換和打包四個子過程。

檔案合併階段重點對以下檔案進行合併:

--所有的.bib檔案合併成ce.bib

--所有的.reg檔案合併成reginit.ini

--所有的.dat檔案合併成initobj.dat

--所有的.db檔案合併成initdb.ini

知道這幾個合併以後便於你在release下查詢你做的修改是否確實被置入了目標平台。

登錄檔壓縮會將reginit.int檔案壓縮成default.fdf檔案。

資源替換就是將exe或dll中的資源替換成本地語言如簡體中文。

接下來才是把這些ce.bib等二進位制檔案製作nk.bin檔案,這才是我們需要的檔案,不過在ce5中好像可以在專案設定中改變這個檔案的名稱,讀者可以自己試試。

以上說的這些編譯過程,在platform builder中的build os選單下分得比較明確,這一點比ce4要好得多,你可以自己掌握讓它單獨執行某一步驟。如果你修改了某個元件的源程式,也可以右擊這一元件然後單獨編譯此元件,最後再生成image,總之,靈活性是比較不錯的了。

同時,經過以上的分析也可以看出來,platform builder這個ide在幫助生成ce時基本上是依賴於資料夾結構和那些文字檔案以及批處理檔案的,因此,對於資料夾結構還是要盡量的熟悉。同時也證明那些總說批處理檔案沒用的人的無知,在微軟的作業系統和開發工具中,批處理檔案是至關重要的,說它無用的人只是由於自己的水平不夠而已。

好了,這次我們學得多做得少,不過這些知識還是有必要了解的,別忘了對照你的資料夾結構來學習哦!

WinCE 5 0邊做邊學 5

對於實時系統,如何除錯是乙個很難解決的問題,包括對系統核心的除錯,對驅動程式的除錯,對應用程式的除錯等。對於應用程式,通常各整合開發環境都提供了常規的單步跟蹤等除錯手段。而對於另兩個的除錯,platform builder除了為我們提供了常規的斷點跟蹤等手段以外,還和系統的源程式配合使用了一種新的除...

WinCE 5 0邊做邊學 5

對於實時系統,如何除錯是乙個很難解決的問題,包括對系統核心的除錯,對驅動程式的除錯,對應用程式的除錯等。對於應用程式,通常各整合開發環境都提供了常規的單步跟蹤等除錯手段。而對於另兩個的除錯,platform builder除了為我們提供了常規的斷點跟蹤等手段以外,還和系統的源程式配合使用了一種新的除...

WinCE 5 0邊做邊學 8

handle hdevice define bufsize 256 wchar buffer bufsize bool apientry dllmain handle hmodule,dword ul reason for call,lpvoid lpreserved handle ttt init...