欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種可執(zhí)行的構(gòu)件動態(tài)連接庫的構(gòu)造和執(zhí)行方法

文檔序號:6555588閱讀:267來源:國知局
專利名稱:一種可執(zhí)行的構(gòu)件動態(tài)連接庫的構(gòu)造和執(zhí)行方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種計算機軟件中的構(gòu)件技術(shù),尤其涉及一種可執(zhí)行的構(gòu) 件動態(tài)連接庫構(gòu)造和執(zhí)行的方法。
背景技術(shù)
目前傳統(tǒng)的構(gòu)件沒有入口的要求,所以也就不可能運行。比如普通的
EXE文件有main或者wmain作為整個執(zhí)行體的入口 ,因而普通的EXE文 件可以被加載器加載,擁有自己的地址空間,并執(zhí)行main函數(shù)或者wmain 函數(shù)內(nèi)的代碼,但普通的EXE只是通過本地加載器將執(zhí)行參數(shù)傳給EXE 執(zhí)行體,不是接口型的函數(shù),故沒辦法直接從遠程執(zhí)行帶參數(shù)的啟動;再 如普通的DLL有DllMain函數(shù)作為初試化DLL的入口 ,但它是沒辦法獨立 存在的,必需要被其它進程加載到進程的地址空間才可以,加載完成后, 為了初試化DLL,通過DllMain執(zhí)行一些初試化的代碼,在DLL卸載時, 處理一些資源回收或者和卸載相關(guān)的事情,但同樣DllMain是普通的函 數(shù),不是接口型的函數(shù),故也不可能直接在遠程帶參數(shù)的初試化;雖然 Windows編程有WinMain()作為用戶程序的入口,其作用相當(dāng)于傳統(tǒng)exe 的main函數(shù),且沒有實質(zhì)上的不同,也不是接口型的函數(shù),故也不可能 直接在遠程帶參數(shù)的初試化。因此如何使構(gòu)件技術(shù)既有遠程化能力,又有 動態(tài)加載能力是一個技術(shù)問題。

發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種可執(zhí)行的構(gòu)件動態(tài)連接庫的構(gòu)
說明書第2/4頁
造方法和其執(zhí)行方法,使相關(guān)構(gòu)件能在遠程根據(jù)一定的參數(shù)被引導(dǎo)執(zhí)行, 并且同時提供一定的構(gòu)件服務(wù),在構(gòu)件自己的生命周期完成后,可被卸載, 卸載時允許用戶處理相關(guān)的資源。
為解決上述技術(shù)問題,本發(fā)明提供了一種可執(zhí)行的構(gòu)件動態(tài)連接庫的 構(gòu)造方法,即包含構(gòu)件編譯器的操作系統(tǒng)執(zhí)行如下步驟構(gòu)件編譯器在編 譯構(gòu)件描述文件時,如發(fā)現(xiàn)有特殊關(guān)鍵字,則在生成的源文件框架中添加 接口,上述接口包含函數(shù)一和函數(shù)二;填寫函數(shù)一和函數(shù)二,用0++編譯 器,編譯源文件框架,產(chǎn)生可執(zhí)行的動態(tài)連接庫構(gòu)件。
本發(fā)明還提供了一種可執(zhí)行的構(gòu)件動態(tài)連接庫的執(zhí)行方法,用于上述 所得的構(gòu)件,即操作系統(tǒng)在將構(gòu)件加載后,獲得接口元數(shù)據(jù)中的接口,首 先調(diào)用上述函數(shù)一,同時可向外以接口形式提供其它的服務(wù),在構(gòu)件生命 周期完成后,調(diào)用函數(shù)二以允許用戶作處理,最后卸載所述構(gòu)件。
本發(fā)明由于在構(gòu)件描述文件中添加特殊關(guān)鍵字,使相關(guān)構(gòu)件能根據(jù)一 定的參數(shù)被引導(dǎo)執(zhí)行,并且同時提供一定的構(gòu)件服務(wù)。


圖1是本發(fā)明具體實施例中動態(tài)連接庫的構(gòu)造方法的流程圖; 圖2是本發(fā)明具體實施例中中動態(tài)連接庫的執(zhí)行方法的流程圖。
具體實施例方式
下面結(jié)合附圖和具體實施例對本發(fā)明作進一步詳細的說明。 首先講述本發(fā)明方法涉及的原理。CAR即Component Assemble at Runtime,為應(yīng)用于Elastos操作系統(tǒng)上的構(gòu)件技術(shù)。本發(fā)明方法即基于 CAR。本發(fā)明方法中的CAR文件是Elastos操作系統(tǒng)中定義的用來描述構(gòu)
件(component)的接口 (interface)特征的描述文件,而 main貝(j是上述CAR 文件中的一個特殊關(guān)鍵字(keyword) 。 Elastos操作系統(tǒng)的CAR構(gòu)件編譯 器(care)在編譯CAR文件時,如發(fā)現(xiàn)有main關(guān)鍵字會在生成的框架文件 中隱含添加接口頂ainApplet ,該接口包含函數(shù)AtEntry([in] EzArray〈EzStr〉 argcv)和AtExit(),然后生成相關(guān)構(gòu)件。操作系統(tǒng)在 將構(gòu)件加載之后,從接口元數(shù)據(jù)得知有接口 IMainApplet,便首先調(diào)用接 口方法AtEntry([in] EzArray〈EzStr〉 argcv),同時可向外以接口形式 提供其它的服務(wù),在構(gòu)件生命周期完成后,調(diào)用AtExit()接口方法以允 許用戶作某些處理,之后卸載構(gòu)件。
下面結(jié)合具體實施例,進一步講述本發(fā)明。
如圖1所示,是本發(fā)明具體實施例中動態(tài)連接庫的構(gòu)造方法的流程 圖。首先是可執(zhí)行的構(gòu)件動態(tài)連接庫的構(gòu)造方法中的代碼實現(xiàn) 1) CAR文件寫法 module class CMainHello {}
可以通過系統(tǒng)的care編譯上述CAR文件,并產(chǎn)生相應(yīng)的匸++語言代 碼框架;care編譯器在編譯CAR文件時,如果發(fā)現(xiàn)有main關(guān)鍵字,會自 動產(chǎn)生源文件框架,在文件框架中,會包含有接口 IMainApplet,該接 口包含有兩個函數(shù) 一個是AtEntry ([in] EzArray〈EzStr> argcv) , argcv 是自描述的字符串型數(shù)據(jù),可遠程化,用來初試化CAR構(gòu)件;另一個是AtExit()用來在CAR構(gòu)件卸載時,回收資源,處理相關(guān)事宜。
2)用戶填寫AtEntry()和AtExit()函數(shù),用0++編譯器,編譯此框架
文件,就可產(chǎn)生可執(zhí)行的動態(tài)連接庫CAR構(gòu)件。 對上述的CAR構(gòu)件可有兩種執(zhí)行方式,艮卩
本地執(zhí)行,在命令行下鍵入構(gòu)件dll的名稱,會被系統(tǒng)象exe文件一 樣的加載到本地執(zhí)行。首先調(diào)用AtEntry()內(nèi)的代碼執(zhí)行,完成后會調(diào)用 AtExit()后,退出系統(tǒng)。
遠程執(zhí)行,要求遠端是Elastos操作系統(tǒng),或者具運行有elastos的 虛擬機,通過指定遠端機器url和需要執(zhí)行的dll,以及執(zhí)行時攜帶的參數(shù), 系統(tǒng)將dll透明地執(zhí)行在遠端的地址空間, 一樣的調(diào)用AtEntry()內(nèi)的代 碼執(zhí)行,完成后會調(diào)用AtExit()后,退出系統(tǒng)。
對使用者而言,同樣的服務(wù)可以在本地也可以在遠程,都透明的執(zhí)行, 而沒有什么不同。因而在Elastos操作系統(tǒng)上,dll可直接由操作系統(tǒng)加 載,而不需要借助exe,可以有自己獨立的地址空間,主線程,執(zhí)行自己 的代碼序列。圖2是本發(fā)明具體實施例中中動態(tài)連接庫的執(zhí)行方法的流程 圖
綜上所述,本發(fā)明方法基于對普通的構(gòu)件DLL的改進,使CAR構(gòu)件的 既有遠程化能力,又有DLL的動態(tài)加載能力,從而使得構(gòu)件以更為靈活的 方式得到應(yīng)用。
權(quán)利要求
1、一種可執(zhí)行的構(gòu)件動態(tài)連接庫的構(gòu)造方法,其特征在于,包含構(gòu)件編譯器的操作系統(tǒng)執(zhí)行如下步驟所述構(gòu)件編譯器在編譯構(gòu)件描述文件時,如發(fā)現(xiàn)有特殊關(guān)鍵字,則在生成的源文件框架中添加接口,所述接口包含函數(shù)一和函數(shù)二;填寫所述函數(shù)一和函數(shù)二,用c++編譯器,編譯所述源文件框架,產(chǎn)生可執(zhí)行的動態(tài)連接庫構(gòu)件。
2、 根據(jù)權(quán)利要求l所述可執(zhí)行的構(gòu)件動態(tài)連接庫的構(gòu)造方法,其特征 在于,所述構(gòu)件編譯器指CAR構(gòu)件編譯器,所述構(gòu)件描述文件是用來描述構(gòu) 件的接口特征的描述文件,所述特殊關(guān)鍵字指main關(guān)鍵字,所述接口指 ImainApplet,所述函數(shù)一指函數(shù)AtEntry (),所述函數(shù)二指函數(shù)AtExit 0 , 所述動態(tài)連接庫構(gòu)件是一個是CAR構(gòu)件;其中所述函數(shù)AtEntry()指 AtEntry([in] EzArray〈EzStr〉 argcv) , argcv是可遠程化的自描述字符串 型數(shù)據(jù),用來初試化所述CAR構(gòu)件,所述函數(shù)AtExit()用來在所述CAR構(gòu)件 卸載時回收資源。
3、 一種可執(zhí)行的構(gòu)件動態(tài)連接庫的執(zhí)行方法,用于執(zhí)行根據(jù)權(quán)利要求 1、 2所得的構(gòu)件,其特征在于,所述操作系統(tǒng)在將所述構(gòu)件加載后,獲得 接口元數(shù)據(jù)中的接口,首先調(diào)用所述函數(shù)一,同時可向外以接口形式提供 其它的服務(wù),在所述構(gòu)件生命周期完成后,調(diào)用所述函數(shù)二以允許用戶作 處理,最后卸載所述構(gòu)件。
4、 根據(jù)權(quán)利要求3所述可執(zhí)行的構(gòu)件動態(tài)連接庫的執(zhí)行方法,其特征 在于,所述構(gòu)件加載指本地執(zhí)行或遠程執(zhí)行,即在命令行下鍵入所述構(gòu)件 的名稱。
全文摘要
本發(fā)明公開了一種可執(zhí)行的構(gòu)件動態(tài)連接庫的構(gòu)造方法,即包含構(gòu)件編譯器的操作系統(tǒng)執(zhí)行如下步驟構(gòu)件編譯器在編譯構(gòu)件描述文件時,如發(fā)現(xiàn)有特殊關(guān)鍵字,則在生成的源文件框架中添加接口,接口包含函數(shù)一和函數(shù)二;填寫函數(shù)一和函數(shù)二,用c++編譯器,編譯源文件框架,產(chǎn)生可執(zhí)行的動態(tài)連接庫構(gòu)件。本發(fā)明還提供了一種可執(zhí)行的構(gòu)件動態(tài)連接庫的執(zhí)行方法,用于上述所得的構(gòu)件,即操作系統(tǒng)在將構(gòu)件加載后,獲得接口元數(shù)據(jù)中的接口,首先調(diào)用上述函數(shù)一,同時可向外以接口形式提供其它的服務(wù),在構(gòu)件生命周期完成后,調(diào)用函數(shù)二以允許用戶作處理,最后卸載所述構(gòu)件。
文檔編號G06F9/445GK101101561SQ20061002868
公開日2008年1月9日 申請日期2006年7月6日 優(yōu)先權(quán)日2006年7月6日
發(fā)明者立 文, 蘇翼鵬, 榕 陳 申請人:上??铺┦兰o(jì)科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
扬州市| 鄄城县| 新邵县| 贵溪市| 赞皇县| 玉环县| 凉城县| 通河县| 龙江县| 弥勒县| 建德市| 盐津县| 庐江县| 闵行区| 准格尔旗| 安徽省| 磐安县| 嫩江县| 大庆市| 建阳市| 化隆| 武陟县| 华池县| 贵溪市| 平原县| 田阳县| 开封市| 汉川市| 岳普湖县| 惠州市| 陆河县| 洛宁县| 蒲城县| 甘泉县| 大英县| 当涂县| 攀枝花市| 双鸭山市| 团风县| 贺州市| 屯昌县|