青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 13,comments - 0,trackbacks - 0
摘自:http://m.shnenglu.com/franksunny/archive/2008/05/16/50083.html

DLLDynamic Link Library)是一段特殊的代碼,它能夠被外部程序在程序運行的時候調用。在DLL里面的代碼可以同時被許多外部程序共享,而且不會引起手機內存的重復分配。

?

DLL根據接口的類型Symbian系統支持兩種類型的DLL:靜態接口DLL和多態接口DLL

靜態接口DLL主調程序啟動的時候被系統自動載入到手機內存里面(唯一的例外是如果該DLL是在ROM只讀存儲器里面,那么可以直接通過它的地址進行調用)。并且如果沒有外部程序使用它了,它將被自動的從內存中卸載。靜態接口DLL在系統內提供了一系列唯一的函數(例如,兩個具有相同導出函數的DLL在系統中也不會混淆)。靜態接口DLL具有.dll文件后綴,通常用于在Symbian系統中實現應用程序引擎(例如,與UI無關的代碼)。

?

多態接口DLL是只帶一個單獨導出函數的普通DLL,一般都是通過調用RLibrary::Load()函數才能被載入到內存中,而且在卸載的時候,也最好通過RLibrary::Close()函數進行卸載。多個多態接口DLL可以為外部程序導出多個相同函數名的函數。所以,這種DLL通常情況下被廣泛應用于實現某個應用程序框架功能擴展時候的插件。在Symbian系統中,多態接口DLL可以有多種不同的文件后綴。其中最著名的一個就是.app結尾的(應用程序),.ldd(邏輯設備驅動),.tsy.csy(電話和通信服務模塊)等等。。。

?

在本文中,我們將只關注靜態接口DLL技術,它是你我在開發中最最常用的DLL類型。我們將以通用DLL的繼續我們的內容。

靜態接口的DLL

DLL調用者的角度來看,DLL有三個文件組成:

1)頭文件:.h的文件后綴,可以#include到主調程序的代碼中去,只有在編譯

的時候有用。

2)導出文件:.lib的文件后綴,可以由主調程序進行鏈接,這個文件記載了DLL的提供的所有接口函數名稱和地址。(arm版本中應該是dso后綴

3DLL文件本身:.dll的文件后綴包括所有.lib文件記載的接口函數的具體實現,主調函數在運行的時候實際調用和執行的部分。

?

DLL編寫者的角度來看,DLL可以被看成是一個完整的Symbian項目。它由以下幾部分組成:

1)項目自己的MMP文件(在bld.inf文件中列出的)

2)一個頭文件,指定了該DLL需要導出的接口

3)源代碼文件,具體導出函數的實現

?

頭文件

DLL的頭文件與其它類的頭文件的頭文件非常類似。不同的地方在于使用了IMPORT_C宏來定義所有導出函數

class CMyEngine : public CBase

{

public:

?? // These functions are visible by the

?? // clients of the DLL and needs to have

?? // the IMPORT_C tag

?? IMPORT_C static CMyEngine* NewL();

?? IMPORT_C static CMyEngine* NewLC();

?

?? IMPORT_C void MyPublicMethod();

?? IMPORT_C void AnotherPublicMethod();

?? ...

private:

?? // These functions are not visible by the

?? // clients of the DLL and then do not need

?? // the IMPORT_C tag

?? CMyEngine();

?? void ConstructL();

?? void SomePrivateMethod();

}

?

實現文件

編寫DLL工作本身沒有什么需要復雜的地方,但是有兩個重要的地方需要留意:

1E32Dll()函數必須實現

2另外一個特殊的宏,EXPORT_C,應該加在每個導出函數實現的前面

例如:

// This function is mandatory for all DLLs

EXPORT_C TInt E32Dll(TDllReason)

{

??????? return KErrNone;

}

?

// This function is exported: The EXPORT_C tag shall be used.

EXPORT_C void MyPublicMethod()

{

?? ...

}

?

// This one is not: The EXPORT_C tag shall not be used.

void SomePrivateMethod()

{

? // Do Something

}

?

MMP文件

DLLMMP文件應該有以下特點

1)定義項目(project)的類型是dll

2)使用正確的UID2的值(0x1000008d)

在開發過程中,你也應該通過EXPORTUNFROZEN告訴編譯環境,DLL接口還沒有定稿,還可以隨時修改

例如:

TARGET??????? MyEngine.dll

TARGETTYPE??? dll

UID?????????? 0x1000008d

...

EXPORTUNFROZEN

?

DLL接口定稿(Freezing DLL

一旦你完成了DLL的開發,在你發行你的DLL版本之前,應該把接口定稿(Freezing)這樣可以確定將來發行的DLL可以向下兼容。

通過將項目的MMP文件中的EXPORTUNFROZEN關鍵字去掉,用常規的方法重新建立DLL,來實現DLL庫的定稿。這時候會有“.def文件不存在”的編譯警告信息出現,不要緊,繼續就建立當前項目,在項目編譯完畢以后,你可以用如下命令定稿:

abld freeze [platform]

例如

?1bldmake?? bldfiles;??

?2abld?? build? gcce;??

?3abld?? freeze gcce;?

注意:

這里通常有三個定稿的def文件夾:在二版本中編譯armi時,用abld freeze armi產生的是BMARM文件夾和對應的Def;在三版本中編譯gccearmV5時會產生EABI文件夾和對應的Def;而用wins時則編譯產生BWINS文件夾和對應的Def。(個人總結)

所有的ARM平臺共享一個.def文件,但是對于wins模擬器和winscw CodeWarrior環境來說,他們有不同的.def文件。

一旦項目已經定稿,重新生成makefile,這時候導入的lib會直接通過定稿的.def文件生成。
posted on 2009-04-29 09:59 收藏也是種愛好 閱讀(258) 評論(0)  編輯 收藏 引用 所屬分類: Symbian編程
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            韩国三级电影一区二区| 一区二区三区回区在观看免费视频| 欧美成人亚洲成人日韩成人| 国产三级精品在线不卡| 欧美一区二区三区日韩| 亚洲一区二区三区视频| 国产精品毛片va一区二区三区| 亚洲色图自拍| 亚洲免费一级电影| 国模套图日韩精品一区二区| 欧美高清在线| 亚洲一区在线直播| 亚洲自拍偷拍麻豆| 一本一本大道香蕉久在线精品| 国产精品成av人在线视午夜片| 午夜影院日韩| 欧美成人性网| 久久精品日韩| 欧美伦理视频网站| 久久免费黄色| 国产精品久久久久久五月尺| 久久在线免费观看视频| 艳妇臀荡乳欲伦亚洲一区| 国产女主播一区| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲欧洲日产国产综合网| 欧美日韩一区二区在线 | 日韩天天综合| 亚洲国产精品999| 翔田千里一区二区| 亚洲香蕉成视频在线观看 | 中国女人久久久| 亚洲国产精品久久人人爱蜜臀| 亚洲深夜激情| 亚洲无玛一区| 欧美日韩性视频在线| 欧美**人妖| 亚洲第一中文字幕| 久久综合给合| 久久一区国产| 久久久久中文| 久久久久国色av免费观看性色| 欧美激情导航| 日韩亚洲不卡在线| 亚洲你懂的在线视频| 国产精品成人一区二区三区夜夜夜| 日韩一级欧洲| 欧美在线观看网站| 尤物视频一区二区| 欧美精品一区二区在线观看| 亚洲另类在线一区| 欧美成人精品1314www| 欧美日韩在线一区二区| 欧美一区二视频| 黄色亚洲在线| 欧美激情五月| 亚洲欧美日韩中文播放| 美女精品在线| 亚洲一区二区三区四区视频| 国产亚洲午夜高清国产拍精品| 久久久天天操| 亚洲专区在线| 最新日韩精品| 牛牛国产精品| 久久久午夜电影| 午夜国产精品视频| 一本一本久久a久久精品综合麻豆| 欧美先锋影音| 欧美乱人伦中文字幕在线| 久久久999精品免费| 在线亚洲一区| 99国产精品久久久久久久| 欧美阿v一级看视频| 欧美在线视频一区二区| 亚洲一区综合| 亚洲女同精品视频| 亚洲一二三四久久| 一区二区三区欧美成人| 亚洲精品一区二区三区四区高清| 亚洲免费影院| 亚洲午夜av电影| 99av国产精品欲麻豆| 亚洲日本在线观看| 亚洲精选在线观看| 亚洲美女网站| 亚洲欧美变态国产另类| 香蕉久久a毛片| 久久嫩草精品久久久久| 欧美暴力喷水在线| 欧美日韩在线播放一区二区| 欧美日韩另类在线| 国产农村妇女毛片精品久久麻豆| 国产精品久久久99| 国产一区二区三区高清在线观看| 在线播放日韩欧美| 国产精品视频午夜| 伊人狠狠色j香婷婷综合| 亚洲国产欧美国产综合一区| 一区二区三区四区在线| 久久国产精品一区二区| 欧美激情一区二区在线| 亚洲乱码国产乱码精品精天堂 | 亚洲电影免费观看高清| 亚洲日本一区二区| 欧美与黑人午夜性猛交久久久| 免费看精品久久片| 亚洲小说区图片区| 欧美激情一区二区三区四区| 国产视频精品网| 在线亚洲欧美| 亚洲日本中文字幕| 欧美在线视屏| 国产精品夜夜夜| 亚洲一区免费视频| 亚洲精品欧美日韩| 美女脱光内衣内裤视频久久影院 | 亚洲一区二区黄| 美腿丝袜亚洲色图| 好看的亚洲午夜视频在线| 欧美专区日韩专区| 亚洲综合视频网| 国产精品久久久久影院色老大 | 一区二区亚洲| 午夜精品久久一牛影视| 亚洲精品久久在线| 欧美成人精品激情在线观看| 韩国精品久久久999| 久久久亚洲国产天美传媒修理工| 亚洲视频久久| 国产欧美日韩| 久久综合中文色婷婷| 欧美激情中文字幕一区二区| 在线免费一区三区| 亚洲国产老妈| 国产精品一区2区| 久久久久久综合网天天| 久久国内精品视频| 91久久久一线二线三线品牌| 亚洲美女电影在线| 国产精品久久久久久亚洲调教| 欧美亚洲三级| 欧美高清视频一区二区三区在线观看| 亚洲美女毛片| 欧美一区二区三区四区高清| 亚洲精品国产精品国产自| 一区二区三区 在线观看视频| 国内精品福利| 一区二区三区黄色| 亚洲丶国产丶欧美一区二区三区| 日韩视频一区二区三区| **欧美日韩vr在线| 亚洲欧美日韩中文视频| 99天天综合性| 美腿丝袜亚洲色图| 极品尤物av久久免费看| 欧美在线视频网站| 欧美一区二区视频在线观看| 亚洲嫩草精品久久| 99热这里只有成人精品国产| 久久综合电影一区| 国产精品综合久久久| 亚洲国产美女精品久久久久∴| 亚洲成人在线网| 香蕉av777xxx色综合一区| 国产精品久久久99| 久久久久久久成人| 久久这里有精品视频| 亚洲电影一级黄| 亚洲免费久久| 国产亚洲欧美一区二区| 蜜臀久久99精品久久久久久9| 欧美高清在线视频观看不卡| 日韩视频一区二区三区在线播放免费观看 | 国产一区二区日韩| 美女网站久久| 国产精品久久久久久一区二区三区 | 久久激情视频| 一本色道久久综合亚洲91| 亚洲网址在线| 亚洲黄色毛片| 国产精品一区二区你懂的| 欧美成ee人免费视频| 国产精品日韩在线播放| 亚洲啪啪91| 亚洲国产精品视频| 亚洲一区在线观看免费观看电影高清| 国内精品免费午夜毛片| 在线午夜精品自拍| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美激情偷拍| 欧美韩国在线| 亚洲第一精品电影| 久久精品国产第一区二区三区最新章节 | 国产精品日韩电影| 日韩视频在线观看免费| 日韩亚洲欧美精品| 欧美日韩免费一区二区三区| 亚洲精品裸体| 一区二区精品在线| 欧美另类99xxxxx|