一种可执行的构件动态连接库的构造和执行方法

文档序号:6555588阅读:247来源:国知局
专利名称:一种可执行的构件动态连接库的构造和执行方法
技术领域
本发明涉及一种计算机软件中的构件技术,尤其涉及一种可执行的构 件动态连接库构造和执行的方法。
背景技术
目前传统的构件没有入口的要求,所以也就不可能运行。比如普通的
EXE文件有main或者wmain作为整个执行体的入口 ,因而普通的EXE文 件可以被加载器加载,拥有自己的地址空间,并执行main函数或者wmain 函数内的代码,但普通的EXE只是通过本地加载器将执行参数传给EXE 执行体,不是接口型的函数,故没办法直接从远程执行带参数的启动;再 如普通的DLL有DllMain函数作为初试化DLL的入口 ,但它是没办法独立 存在的,必需要被其它进程加载到进程的地址空间才可以,加载完成后, 为了初试化DLL,通过DllMain执行一些初试化的代码,在DLL卸载时, 处理一些资源回收或者和卸载相关的事情,但同样DllMain是普通的函 数,不是接口型的函数,故也不可能直接在远程带参数的初试化;虽然 Windows编程有WinMain()作为用户程序的入口,其作用相当于传统exe 的main函数,且没有实质上的不同,也不是接口型的函数,故也不可能 直接在远程带参数的初试化。因此如何使构件技术既有远程化能力,又有 动态加载能力是一个技术问题。

发明内容
本发明要解决的技术问题是提供一种可执行的构件动态连接库的构
说明书第2/4页
造方法和其执行方法,使相关构件能在远程根据一定的参数被引导执行, 并且同时提供一定的构件服务,在构件自己的生命周期完成后,可被卸载, 卸载时允许用户处理相关的资源。
为解决上述技术问题,本发明提供了一种可执行的构件动态连接库的 构造方法,即包含构件编译器的操作系统执行如下步骤构件编译器在编 译构件描述文件时,如发现有特殊关键字,则在生成的源文件框架中添加 接口,上述接口包含函数一和函数二;填写函数一和函数二,用0++编译 器,编译源文件框架,产生可执行的动态连接库构件。
本发明还提供了一种可执行的构件动态连接库的执行方法,用于上述 所得的构件,即操作系统在将构件加载后,获得接口元数据中的接口,首 先调用上述函数一,同时可向外以接口形式提供其它的服务,在构件生命 周期完成后,调用函数二以允许用户作处理,最后卸载所述构件。
本发明由于在构件描述文件中添加特殊关键字,使相关构件能根据一 定的参数被引导执行,并且同时提供一定的构件服务。


图1是本发明具体实施例中动态连接库的构造方法的流程图; 图2是本发明具体实施例中中动态连接库的执行方法的流程图。
具体实施例方式
下面结合附图和具体实施例对本发明作进一步详细的说明。 首先讲述本发明方法涉及的原理。CAR即Component Assemble at Runtime,为应用于Elastos操作系统上的构件技术。本发明方法即基于 CAR。本发明方法中的CAR文件是Elastos操作系统中定义的用来描述构
件(component)的接口 (interface)特征的描述文件,而 main贝(j是上述CAR 文件中的一个特殊关键字(keyword) 。 Elastos操作系统的CAR构件编译 器(care)在编译CAR文件时,如发现有main关键字会在生成的框架文件 中隐含添加接口頂ainApplet ,该接口包含函数AtEntry([in] EzArray〈EzStr〉 argcv)和AtExit(),然后生成相关构件。操作系统在 将构件加载之后,从接口元数据得知有接口 IMainApplet,便首先调用接 口方法AtEntry([in] EzArray〈EzStr〉 argcv),同时可向外以接口形式 提供其它的服务,在构件生命周期完成后,调用AtExit()接口方法以允 许用户作某些处理,之后卸载构件。
下面结合具体实施例,进一步讲述本发明。
如图1所示,是本发明具体实施例中动态连接库的构造方法的流程 图。首先是可执行的构件动态连接库的构造方法中的代码实现 1) CAR文件写法 module class CMainHello {}
可以通过系统的care编译上述CAR文件,并产生相应的匸++语言代 码框架;care编译器在编译CAR文件时,如果发现有main关键字,会自 动产生源文件框架,在文件框架中,会包含有接口 IMainApplet,该接 口包含有两个函数 一个是AtEntry ([in] EzArray〈EzStr> argcv) , argcv 是自描述的字符串型数据,可远程化,用来初试化CAR构件;另一个是AtExit()用来在CAR构件卸载时,回收资源,处理相关事宜。
2)用户填写AtEntry()和AtExit()函数,用0++编译器,编译此框架
文件,就可产生可执行的动态连接库CAR构件。 对上述的CAR构件可有两种执行方式,艮卩
本地执行,在命令行下键入构件dll的名称,会被系统象exe文件一 样的加载到本地执行。首先调用AtEntry()内的代码执行,完成后会调用 AtExit()后,退出系统。
远程执行,要求远端是Elastos操作系统,或者具运行有elastos的 虚拟机,通过指定远端机器url和需要执行的dll,以及执行时携带的参数, 系统将dll透明地执行在远端的地址空间, 一样的调用AtEntry()内的代 码执行,完成后会调用AtExit()后,退出系统。
对使用者而言,同样的服务可以在本地也可以在远程,都透明的执行, 而没有什么不同。因而在Elastos操作系统上,dll可直接由操作系统加 载,而不需要借助exe,可以有自己独立的地址空间,主线程,执行自己 的代码序列。图2是本发明具体实施例中中动态连接库的执行方法的流程 图
综上所述,本发明方法基于对普通的构件DLL的改进,使CAR构件的 既有远程化能力,又有DLL的动态加载能力,从而使得构件以更为灵活的 方式得到应用。
权利要求
1、一种可执行的构件动态连接库的构造方法,其特征在于,包含构件编译器的操作系统执行如下步骤所述构件编译器在编译构件描述文件时,如发现有特殊关键字,则在生成的源文件框架中添加接口,所述接口包含函数一和函数二;填写所述函数一和函数二,用c++编译器,编译所述源文件框架,产生可执行的动态连接库构件。
2、 根据权利要求l所述可执行的构件动态连接库的构造方法,其特征 在于,所述构件编译器指CAR构件编译器,所述构件描述文件是用来描述构 件的接口特征的描述文件,所述特殊关键字指main关键字,所述接口指 ImainApplet,所述函数一指函数AtEntry (),所述函数二指函数AtExit 0 , 所述动态连接库构件是一个是CAR构件;其中所述函数AtEntry()指 AtEntry([in] EzArray〈EzStr〉 argcv) , argcv是可远程化的自描述字符串 型数据,用来初试化所述CAR构件,所述函数AtExit()用来在所述CAR构件 卸载时回收资源。
3、 一种可执行的构件动态连接库的执行方法,用于执行根据权利要求 1、 2所得的构件,其特征在于,所述操作系统在将所述构件加载后,获得 接口元数据中的接口,首先调用所述函数一,同时可向外以接口形式提供 其它的服务,在所述构件生命周期完成后,调用所述函数二以允许用户作 处理,最后卸载所述构件。
4、 根据权利要求3所述可执行的构件动态连接库的执行方法,其特征 在于,所述构件加载指本地执行或远程执行,即在命令行下键入所述构件 的名称。
全文摘要
本发明公开了一种可执行的构件动态连接库的构造方法,即包含构件编译器的操作系统执行如下步骤构件编译器在编译构件描述文件时,如发现有特殊关键字,则在生成的源文件框架中添加接口,接口包含函数一和函数二;填写函数一和函数二,用c++编译器,编译源文件框架,产生可执行的动态连接库构件。本发明还提供了一种可执行的构件动态连接库的执行方法,用于上述所得的构件,即操作系统在将构件加载后,获得接口元数据中的接口,首先调用上述函数一,同时可向外以接口形式提供其它的服务,在构件生命周期完成后,调用函数二以允许用户作处理,最后卸载所述构件。
文档编号G06F9/445GK101101561SQ20061002868
公开日2008年1月9日 申请日期2006年7月6日 优先权日2006年7月6日
发明者立 文, 苏翼鹏, 榕 陈 申请人:上海科泰世纪科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1