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

franksunny的個人技術空間
獲得人生中的成功需要的專注與堅持不懈多過天才與機會。 ——C.W. Wendte

 

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

另外關于EXPORTUNFROZEN,有必要再啰嗦兩句:在沒加該關鍵字的時候,可以進行接口定稿(即產生def文件),但是不能產生lib文件,如此在編譯包含該lib的工程中編譯mmp時會報lib文件找不到的錯誤;加了EXPORTUNFROZEN就能產生lib文件,但是接口就已經凍結了,這個時候再修改接口,新修改的接口就沒有被導引出來(個人總結)。

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

一旦項目已經定稿,重新生成makefile,這時候導入的lib會直接通過定稿的.def文件生成。



本文很大一塊內容屬于轉載別人的,但是今天發布本文是找不到鏈接了,個人只是驗證了下,為下篇EasyDgm使用做下預備知識
posted on 2008-05-16 20:10 frank.sunny 閱讀(4658) 評論(0)  編輯 收藏 引用 所屬分類: symbian 開發

常用鏈接

留言簿(13)

隨筆分類

個人其它博客

基礎知識鏈接

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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成人免费| 狠狠色2019综合网| 亚洲电影在线免费观看| 欧美日本高清| 久久综合九色| 欧美网站在线| 亚洲成人在线视频播放| 欧美日本不卡| 久久伊人免费视频| 国产精品久久久久aaaa樱花 | 伊人婷婷欧美激情| 亚洲最新视频在线播放| 亚洲国产电影| 午夜精品久久久久久久久久久久 | 亚洲欧美另类在线观看| 麻豆91精品| 久久久久国产精品午夜一区| 欧美日韩国产精品成人| 欧美国产视频一区二区| 国产欧美精品在线| 日韩视频精品| 亚洲六月丁香色婷婷综合久久| 午夜精品婷婷| 亚洲欧美国产一区二区三区| 欧美电影在线观看| 欧美成人精品一区二区三区| 国产亚洲精品bt天堂精选| 亚洲精品国产精品国产自| 亚洲国产精品久久| 久久久www成人免费精品| 性亚洲最疯狂xxxx高清| 欧美午夜精品一区二区三区| 亚洲日本中文字幕免费在线不卡| …久久精品99久久香蕉国产| 久久九九国产精品怡红院| 久久精品理论片| 国产伦精品一区二区三| 亚洲在线国产日韩欧美| 午夜在线一区二区| 国产精品一二三视频| 亚洲一区二区在线观看视频| 亚洲欧美日韩第一区| 国产精品呻吟| 欧美在线欧美在线| 久久精品青青大伊人av| 精品成人久久| 免费观看一级特黄欧美大片| 欧美激情视频免费观看| 亚洲美女在线观看| 欧美视频中文一区二区三区在线观看 | 一区二区日本视频| 欧美日韩免费观看一区=区三区| 亚洲欧洲精品成人久久奇米网| 亚洲麻豆国产自偷在线| 欧美午夜精品| 欧美亚洲一区二区在线| 乱人伦精品视频在线观看| 亚洲国产免费| 欧美三区不卡| 性久久久久久| 一本一本久久a久久精品综合妖精| 亚洲国产一区二区三区高清| 久久婷婷国产综合国色天香| 国产亚洲毛片| 毛片基地黄久久久久久天堂| 亚洲国产日日夜夜| 亚洲一区二区三区四区五区午夜| 国产精品丝袜91| 久久久久久电影| 亚洲欧洲日韩综合二区| 午夜国产一区| 亚洲第一区中文99精品| 欧美午夜a级限制福利片| 先锋影音网一区二区| 亚洲第一页在线| 亚洲欧美日韩国产| 在线欧美日韩精品| 国产精品久久久久影院色老大 | 亚洲综合999| 精品福利免费观看| 欧美视频在线免费| 久久婷婷一区| 亚洲欧美激情诱惑| 亚洲国产成人不卡| 久久久www成人免费精品| 亚洲三级影院| 国产综合色产在线精品| 欧美日韩国产一区二区三区地区| 欧美在线视频不卡| 夜夜嗨av一区二区三区四季av| 久久一区中文字幕| 午夜精品美女自拍福到在线| 亚洲免费观看高清完整版在线观看熊| 国产精品美女xx| 欧美日韩国产成人在线观看| 久久精品国产欧美亚洲人人爽| 在线亚洲电影| 亚洲精品一区二区在线观看| 久久女同互慰一区二区三区| 亚洲欧美久久| 一区二区三区欧美日韩| 亚洲国产成人av好男人在线观看| 国产日韩精品一区二区浪潮av| 欧美高清日韩| 嫩草影视亚洲| 久久午夜av| 久久国产一区二区| 午夜精品久久久久久久99水蜜桃| 99国产精品国产精品毛片| 亚洲国产一区二区视频| 欧美大片一区| 欧美成人亚洲成人| 欧美wwwwww| 欧美电影免费观看网站| 每日更新成人在线视频| 久久亚洲一区二区三区四区| 久久精品一区二区| 久久久久国产免费免费| 久久久久久久综合狠狠综合| 久久成人精品无人区| 欧美亚洲综合网| 久久成人综合网| 久久精品国产99精品国产亚洲性色| 亚洲欧美一区二区激情| 欧美一级二区| 久久综合狠狠综合久久综合88 | 一本久道久久综合狠狠爱| 亚洲精品四区| 久久aⅴ国产紧身牛仔裤| 亚洲深夜激情| 中文国产一区| 亚洲制服少妇| 亚洲女人天堂成人av在线| 亚洲一区视频| 欧美一级专区| 久久久久网址| 亚洲国产欧美一区二区三区久久| 欧美福利小视频| 日韩西西人体444www| 亚洲一区二区在线看| 久久国产一区二区三区| 免费黄网站欧美| 欧美精品偷拍| 国产麻豆精品视频| 在线观看欧美视频| 艳女tv在线观看国产一区| 久久精品一区蜜桃臀影院 | 亚洲图片欧美午夜| 午夜在线一区二区| 另类亚洲自拍| 欧美日韩在线第一页| 国内激情久久| 一区二区三区四区五区精品| 久久国产婷婷国产香蕉| 欧美激情成人在线视频| 在线视频精品一区| 久久综合中文字幕| 国产精品男女猛烈高潮激情| 激情成人中文字幕| 亚洲天堂久久| 久久最新视频| 亚洲图中文字幕| 欧美国产欧美亚洲国产日韩mv天天看完整 | 日韩一区二区精品视频| 久久国产99| 亚洲乱码久久| 久久视频在线看| 国产日韩成人精品| 日韩视频一区二区在线观看 | 亚洲午夜日本在线观看| 免费中文字幕日韩欧美| 一区二区三区视频观看| 免费观看亚洲视频大全| 国产视频久久久久| 亚洲一区不卡| 日韩图片一区| 欧美大片国产精品| 樱桃成人精品视频在线播放| 欧美在线电影| 亚洲专区一二三|