Symbian OS中的binary檔案

2021-04-23 00:02:52 字數 1362 閱讀 7756

前幾日,此文章寫到一半的時候,按儲存鍵,然後發表,發現竟是空白。進入編輯模式後,回滾也沒有效果,搞得興致全無,我對csdn的blog的編輯器印象分大跌。閒言少敘,書說正題。

和windows系統一樣,symbian os也是用exe做為其可執行程式的副檔名。但是與windows exe檔案的pe結構不同,在arm平台上的symbian exe用的是一種叫做e32image的檔案結構。得出這樣乙個判斷的理由是:在symbian的build系統中,最後一步需要呼叫elf2e32,其實就是做乙個檔案結構的轉換,將elf結構轉化為e32結構。另外提一句,winscw是symbian支援的一種build target平台,它的作用是方便程式設計師在windows系統上利用模擬器來進行除錯,所以winscw平台下的exe就是windows支援的pe結構。

symbian os中的exe檔案的內容可分為三個部分:**區、唯讀靜態資料區、可寫靜態資料區。與其他作業系統類似,如果系統上存在同乙個exe的多個例項,**區和唯讀靜態資料區在記憶體中只有乙份拷貝,多個例項(程序)共享同乙份**和靜態資料;而可寫靜態區在每乙個呼叫程序內都有乙份拷貝。這種機制能夠減少記憶體的開銷。

symbian只允許程序在它的主線程內呼叫乙個exe。

symbian dll可以分為兩類:共享庫dll和多型dll。

a. 共享庫dll

共享庫實現了可能會被多個exe或dll呼叫的庫**。

和windows中的靜態dll相似, 共享庫dll中實現了多個dll的匯出函式。呼叫者通過dll提供者給出的標頭檔案和lib檔案,直接呼叫這些匯入函式。如果某個exe靜態連線了某些dll,在該exe載入時,會載入這些dll,如果這些dll又連線到了其他dll,又會遞迴的載入這些二次連線的dll。

b. 多型dll

多型dll即是封裝了symbian ecom抽象介面類的dll。

它通常只有單一的入口,通過這個gate函式例項化具體的實現類。

c. 共享庫dll和多型dll的區別

可呼叫函式個數

多個乙個

被封裝的實現**

函式的集合或乙個類的實現

乙個抽象基類的實現

載入方式

動態載入:rlibrary::load()載入

副檔名dll

要正確的使用tls,需要做三件事:在dll的入口函式e32dll()中初始化tls;在函式中使用tls;在dll釋放時,釋放tls

a. 初始化tls

e32dll()

break;

...}

b. 使用tls

foo()

c. 釋放tls

e32dll()

break;

...}

客戶端ecom抽象介面

ecom框架

3.2 ecom的呼叫端

Symbian OS中的訊息儲存與常用操作

說明 前面訊息的基本知識主要參考 series60應用程式開發 中的有關內容,後面是前段做mtm開發中用到的 一 訊息儲存基本知識 symbian os 提供的訊息傳送架構基於 client server 機制,伺服器負責管理手機上的各種訊息,在進行訊息相關操作之前我們需要了解 symbian os...

Python中的descriptor中的一點疑問

在我的印象中,類中的函式是可以有兩種呼叫方式的,如下 class b def func self return 10 b b b.func b.func b 於是,在之前研究descriptor的時候,我就有了幾點困惑 我將 更換成了如下兩個版本 版本1 import time class lazy...

python中的dict Python中的dict

dict python內建了字典 dict的支援,dict全稱dictionary,在其他語言中也稱為map,使用鍵 值 key value 儲存,具有極快的查詢速度。d print dict get michael d michael add a element d adam 67 print d...