引用自:http://www.sf.org.cn/Article/symbiandev/200508/25.html
symbian學(xué)習(xí)筆記一
第一部分: hello world程序解說
symbian的不同點:
需要自己處理下面的事情:
trap harness,cleanup stack,leave,heap marking
也就是需要自己進行錯誤檢查,
由于沒有異常機制,所以symbian使用cleanupstack處理異常
TRAP宏像是catch(…) 函數(shù)名帶L的像是throw
最后只要在E32Main里面使用一次TRAP就可以了 這樣保證內(nèi)存沒有瀉漏
對于c字符串,需要使用_L把它轉(zhuǎn)換成symbain使用的描述
symbian是面向?qū)ο蟮模詫Χ鄶?shù)c庫函數(shù)進行了封裝,如printf
symbian的入口是E32Main函數(shù)
GLDEF_C宏表示這個函數(shù)是模塊的接口
由于c中沒有規(guī)定基本類型的長度,symbian使用typedef重定義了基本類型,如TInt16表示16位int
編譯:
工程定義文件
可以使用codewarrior或是gcc編譯,我們把編譯相關(guān)信息放在工程定義文件中(擴展名為.mmp,makmake project),并使用其它工具把mmp文件變成makefile或是其它環(huán)境下(如codewarrior)的工程文件.下面是hellotext.mmp的內(nèi)容:
// hellotext.mmp
TARGET HelloText.exe
TARGETTYPE exe
SOURCEPATH .
UID 0
SOURCE hellotext.cpp
USERINCLUDE .
SYSTEMINCLUDE epoc32include
LIBRARY euser.lib
TARGET表示生成的可執(zhí)行文件的名字,TARGETTYPE表示生成的文件的類型,這里是exe
UID對GUI程序很重要,這里設(shè)置為0
SOURCEPATH表示源文件(.cpp)的目錄
SOURCE指明源文件名
USERINCLUDE和SYSTEMINCLUDE表示用戶自己聲明的頭文件與系統(tǒng)頭文件的目錄
通常我們都需要把SYSTEMINCLUDE聲明成epoc32include
LIBRARY聲明需要鏈接的庫,一般需要E32用戶庫就可以,也就是euser.lib
組件定義文件
symbian需要一個組件定義文件,這個文件名字總是bld.inf,在這個文件中包含所有的工程定義文件(mmp),更復(fù)雜的情況下會包括其它相關(guān)信息
下面是hellotext的
// BLD.INF
PRJ_MMPFILES
hellotext.mmp
編譯
cd scmphellotext
bldmake bldfiles
上面的命令會在scmphellotext下生成abld.bat文件,同時會創(chuàng)建epoc32buildscmphellotext目錄
abld build winscw udeb
winscw表示生成codewarrior(cw)模擬器(win
simulator)的工程文件,udeb表示創(chuàng)建unicode的debug版本
build分下面六個步驟:
export過程復(fù)制輸出文件到它們的目標(biāo),一般會把通用頭文件復(fù)制到epoc32include,多數(shù)應(yīng)用程序在這步不需要任何操作
makefile階段生成必須的makefile或ide的工作空間(如vc的dsp文件)
庫階段創(chuàng)建輸入庫
資源階段創(chuàng)建應(yīng)用程序的資源文件,位圖和應(yīng)用程序信息文件(aufs)
目標(biāo)階段生成應(yīng)用程序的主執(zhí)行文件
最后階段執(zhí)行任何最后的操作,多數(shù)程序這里不需要
這些階段都有選項在abld工具中,可以使用abld help得到各選項內(nèi)容
最后結(jié)果放在epoc32releasewinscwudebhellotext.exe,你可以在那里雙擊它
自己的操作如下
bldmake bldfiles @UIQ_21:com.symbian.UIQ
abld build wins udeb @UIQ_21:com.symbian.UIQ
然后運行epoc32releasewinscwudebhellotext.exe
使用@UIQ_21:com.symbian.UIQ的原因是因為沒有設(shè)置EPOCROOT環(huán)境變量,并且安裝了兩套symbian環(huán)境一個安裝在C:SymbianUIQ_21
創(chuàng)建手機上運行的程序
abld build armi urel
創(chuàng)建安裝文件
在scmphellotext下運行
makesys hellotext.pkg
這將會生成hellotext.sis,你可以把它上傳到手機上