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

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 收藏也是種愛好 閱讀(265) 評論(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>
            国产日产高清欧美一区二区三区| 久久精品成人| 国产精品一区二区在线| 欧美日韩国产123| 欧美日韩精品| 欧美日韩裸体免费视频| 欧美片在线观看| 欧美三级不卡| 国产精品久久久久久妇女6080| 欧美日韩色一区| 国产精品久久久久久久午夜| 国产精品亚洲片夜色在线| 国产日韩欧美91| 91久久精品国产91久久性色tv | 欧美视频一区在线观看| 国产精品va| 国产午夜精品视频免费不卡69堂| 国产手机视频一区二区| 国产欧美综合在线| 亚洲国产成人tv| 一区二区三区免费在线观看| 亚洲免费在线播放| 蜜桃av一区| 日韩一区二区精品在线观看| 午夜精品999| 欧美精品一区三区| 国产在线欧美日韩| 亚洲美女区一区| 久久久久国产精品一区三寸| 亚洲国产合集| 亚洲欧美日韩一区| 欧美国产一区在线| 国产日韩专区| 在线亚洲美日韩| 男人天堂欧美日韩| 中文久久精品| 欧美肥婆在线| 国产一区视频网站| 亚洲一区二区伦理| 亚洲国产mv| 久久精品视频亚洲| 国产精品久久久久久久电影| 亚洲裸体视频| 久久影院午夜论| 亚洲一区二区视频在线| 欧美激情亚洲另类| 在线成人h网| 久久xxxx精品视频| 亚洲午夜黄色| 久久综合色8888| 这里只有精品视频在线| 欧美精品一区在线| 亚洲福利精品| 久久亚洲图片| 午夜欧美电影在线观看| 欧美日韩中文精品| 日韩亚洲精品视频| 亚洲国产精品视频一区| 亚洲欧美综合一区| 国产精品香蕉在线观看| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 91久久久在线| 免费不卡在线观看av| 久久电影一区| 99精品免费网| 亚洲第一精品福利| 久久综合伊人77777蜜臀| 韩日午夜在线资源一区二区| 久久国产精品免费一区| 欧美亚洲免费在线| 国产日韩在线亚洲字幕中文| 久久成人这里只有精品| 性色av一区二区三区红粉影视| 国产精品成人观看视频国产奇米| 一本色道**综合亚洲精品蜜桃冫| 日韩视频免费在线观看| 欧美日韩亚洲91| 亚洲制服欧美中文字幕中文字幕| 99热免费精品在线观看| 欧美香蕉视频| 久久精品一区二区国产| 久久久亚洲高清| 亚洲欧洲一区二区在线播放| 亚洲精品九九| 国产精品国产馆在线真实露脸| 午夜免费久久久久| 久久久精品日韩| 亚洲三级观看| 亚洲天堂视频在线观看| 韩国三级在线一区| 亚洲国产精品v| 国产精品女人久久久久久| 久久精品女人| 欧美成人精品在线播放| 亚洲欧美成人网| 久久精品30| 99精品国产99久久久久久福利| 亚洲一区二区在线视频| 在线播放中文字幕一区| 一区二区三区四区五区视频 | 亚洲激情在线观看视频免费| 欧美视频福利| 久久久久久日产精品| 欧美va亚洲va日韩∨a综合色| 亚洲一区二区三区在线播放| 美女黄毛**国产精品啪啪| 欧美高清在线视频| 国产精品福利av| 欧美本精品男人aⅴ天堂| 欧美视频一区二区| 久久久精品一区| 久久艳片www.17c.com| 亚洲一二区在线| 久久久久中文| 香蕉乱码成人久久天堂爱免费| 亚洲一区www| 这里只有精品在线播放| 久久久av水蜜桃| 亚洲制服av| 欧美日韩1区2区| 欧美激情影音先锋| 一区二区三区在线视频播放| 一本久久综合亚洲鲁鲁| 在线日韩电影| 在线观看成人一级片| 免费欧美在线| 国产日韩欧美综合一区| 99热这里只有精品8| 91久久精品国产| 久久一区二区精品| 鲁大师成人一区二区三区| 国产精品一区二区三区免费观看| 亚洲片国产一区一级在线观看| 国产综合网站| 欧美诱惑福利视频| 欧美日韩中文在线观看| 欧美视频在线观看免费网址| 午夜综合激情| 国产乱肥老妇国产一区二| 一区二区三区四区五区精品| 久久综合狠狠| 美女被久久久| 韩国av一区二区三区四区| 午夜精品视频在线观看| 亚洲欧美国产日韩中文字幕| 欧美激情导航| 亚洲精品1区| 亚洲精品专区| 欧美日本国产视频| 亚洲精品在线视频| av成人手机在线| 欧美调教视频| 亚洲综合日本| 亚洲美女色禁图| 欧美三区在线视频| 亚洲午夜在线观看| 久久成人精品无人区| 国产亚洲一本大道中文在线| 欧美在线综合视频| 蜜臀久久99精品久久久画质超高清 | 久色婷婷小香蕉久久| 欧美国产视频在线| 亚洲午夜精品17c| 国产色产综合产在线视频| 久久免费精品视频| 亚洲第一主播视频| 亚洲永久免费| 激情自拍一区| 欧美日韩伦理在线| 久久精品国产第一区二区三区最新章节 | 亚洲一二三区视频在线观看| 欧美另类高清视频在线| 99国产精品久久久久久久成人热 | 久久噜噜噜精品国产亚洲综合| 免费人成精品欧美精品| 一本大道av伊人久久综合| 国产亚洲一区二区精品| 欧美黄色影院| 国产日韩欧美麻豆| 一本色道久久综合狠狠躁篇的优点| 亚洲老司机av| 欧美mv日韩mv亚洲| 欧美一区二区三区在线观看视频| 欧美国产成人在线| 久久都是精品| 国产一区二区三区黄| 夜夜精品视频| 亚洲日产国产精品| 久久久久久久999精品视频| 国产精品试看| 亚洲午夜精品国产| 亚洲一区www| 国产一区二区三区黄| 亚洲精品乱码久久久久久日本蜜臀| 久久国产欧美日韩精品| 国产亚洲一级| 最新日韩在线| 国产精品自在线| 久久综合网络一区二区| 久久综合狠狠综合久久综合88|