当前位置: 首页 > 专利查询>LSI公司专利>正文

简化具有动态库的接口的方法技术

技术编号:4146761 阅读:249 留言:0更新日期:2012-04-11 18:40
简化具有动态库的接口的方法。一种方法可以包括定义一包含具有实现指针的静态成员的接口类。所述方法也可包括加载一包含所述接口类的存根实现的主代码段。此外,所述方法可包括实例化所述接口类的存根实现以提供一存根实现对象。所述接口类的存根实现包括被配置以设置所述实现指针指向所述存根实现对象的第一构造函数。进一地,所述方法包括加载一包含所述接口类的实实现的动态库。更进一步,所述方法可包括实例化所述接口类的实实现以提供一实实现对象。所述接口类的实实现包括被配置以设置所述实现指针指向所述实实现对象的第二构造函数。

【技术实现步骤摘要】

本专利技术总体涉及计算机编程领域,以及更具体地,涉及一种用来简化具有动态库 的接口的系统、方法、和计算机编程产品。
技术介绍
利用动态库可以用于避免将代码转载入内存直至需要所述代码用来实现计算机 程序。包括弱符号链接功能性的链接器允许计算机程序的主代码引用动态库中的符号而不 产生链接时(link-time)错误。但是,这种类型的链接器随后在使用符号时会要求引用这 些符号的代码检查运行(rim-time)错误。另外,一些链接器不支持弱符号链接,和/或在 一些情况下可禁用弱符号链接。在这些情形中,所述计算机程序的主代码段可能无法引用 动态库中的符号而不产生链接时错误。可替换地,另一种方法可要求可能被主代码引用的动态库中的所有符号被包括 在符号表中。在这种实施方式下,所述主代码随后在引用这些符号时使用符号表查询 路由检查它们的存在。然后,当找到所需符号时,可以通过指针去访问它以避免链接时 (link-time)错误。该技术会给计算机编程环境引入不必要的复杂性,同时增加所述符号表 的大小,并需要特别的运行(rim-time)来实现和检验符号表查询的结果。
技术实现思路
一种方法可以包括定义一包含具有实现指针的静态成员的接口类。所述方法也 可以包括加载一包含所述接口类的存根实现的主代码段。此外,所述方法可以包括实例化 所述接口类的所述存根实现以提供一存根实现对象。所述接口类的所述存根实现可以包 括第一构造函数,该第一构造函数被配置以设置所述实现指针指向所述存根实现对象。进 一步,所述方法可以包括加载一包含所述接口类的实实现(real implementation)的动 态库。更进一步,所述方法可包括实例化所述接口类的所述实实现以提供一实实现(real implementation)对象。所述接口类的所述实实现包括第二构造函数,该第二构造函数被配 置以设置所述实现指针指向所述实实现对象。一种计算机编程产品可包括承载一个或多个指令的信号承载介质,用于定义一包 含具有实现指针的静态成员的接口类。所述计算机编程产品也可包括一个或多个指令,用 于加载一包含所述接口类的一存根实现的主代码段。此外,所述计算机编程产品可包括一 个或多个指令,用于实例化所述接口类的存根实现以提供一存根实现对象。所述接口类的 存根实现可以包括第一构造函数,该第一构造函数被配置以设置所述实现指针指向所述存 根实现对象。进一步,所述计算机编程产品可包括一个或多个指令,用于加载一包含所述接 口类的实实现的动态库。更进一步,所述计算机编程产品可包括一个或多个指令,用于实例 化所述接口类的实实现以提供一实实现对象。 述接口类的实实现可以包括第二构造函 数,该第二构造函数被配置以设置所述实现指针指向所述实实现对象。一种系统可包括计算设备和在所述计算设备上执行时使所述计算设备定义一包含具有实现指针的静态成员的接口类的指令。所述系统也可包括在所述计算设备上执行时 使所述计算设备加载一包含所述接口类的存根实现的主代码段的指令。此外,所述系统可 包括在所述计算设备上执行时使所述计算设备实例化所述接口类的存根实现以提供一存 根实现对象的指令。所述接口类的存根实现包括被配置以设置所述实现指针指向所述存根 实现对象的第一构造函数。进一步地,所述系统可包括在所述计算设备上执行时使所述计 算设备加载一包含所述接口类的实实现的动态库的指令。更进一步地,所述系统可包括在 所述计算设备上执行时使所述计算设备实例化所述接口类的实实现以提供一实实现对象 的指令。所述接口类的实实现包括被配置以设置所述实现指针指向所述实实现对象的第二 构造函数。应该理解上述的一般描述和以下的具体描述都仅仅是示范性和解释性的,并不是 对本专利技术公开内容的强制限制。附图被结合入且组成本说明书的一部分,解释了公开的主 题。上述描述和附图用来一起解释本专利技术所公开的原理。附图说明本专利技术公开的多个优点可参照下面的附图更容易被本领域技术人员所理解图1是本专利技术所述的表示多个类的类方框图;图2是本专利技术所述的表示一种方法的流程图;图3是本专利技术所述的一种计算机编程产品的局部视图;和图4是本专利技术所述的一种示例系统的局部视图。具体实施方案现在将详细说明在附图中示出的公开的主题。总体参照图1到图2,根据本专利技术描述了一种方法200。总体而言,方法200使用 C++继承技术结合加强单例模式(带有能修改的实现指针)。这样,即使在特定库未被加载 时,方法200仍可提供对动态库符号的访问。例如,需要由主代码段102访问的动态库100 中的符号可以作为抽象C++单例接口类的成员被包含。所述动态库100包括一个含有所述 接口 108的实实现104的C++单例类,以及所述主代码段102包括另一个含有所述接口 108 的存根实现106的C++单例类。与单例设计模式中一样,所述接口类的静态成员包含指向 所述实现类的指针。最初此指针指向存根实现对象,但是当所述动态库100被加载时,构造 函数修改所述指针以指向来自所述动态库100的实实现对象。应该注意到,下面描述使用了具有一些特性的C++语法和结构。例如,下面描述包 括接口类,其被描述为增强单例接口类。更具体地,所述增强单例接口类作为抽象C++单例 接口类被实现。但是,应该理解的是上述描述是以解释的形式提供的,并不意味着对本专利技术 进行限制。例如,当下面的描述是在引用C++时,任何使用封装和/或包括类似C++的继承 特征的编程语言都能用于本专利技术中。在一个特定实施例中,可以使用C编程语言。在C实 现中,下面描述的存根实现可包括第一阵列的指针,同时所述实实现可包括第二阵列的指 针(这里用一个指针代替每个符号)。在这样的实现中,每个符号将会通过索引所述阵列进 行访问。现在参照方法200(以及特别注意图1所示的表示这些关系的类方框图),首先,包含具有实现指针的静态成员的接口类108被定义,210。随后,在动态库100被加载之前,包 含所述接口类108的存根实现106的主代码段102被加载,220。下一步,所述存根实现106 被实例化以提供存根实现对象,所述接口类108的存根实现106包括被配置以设置所述实 现指针指向所述存根实现对象的第一构造函数110,230。例如,如标准单例模式中一样,所 述第一构造函数110可以利用“Interface set Instance () ”来设置所述实现指针指向所 述实现对象(在此情形中为存根实现对象)。接着,当客户端112访问符号114时,所述客 户端112可使用语法“Interface::getInstance()-> symbol 1 (). ”。在此情形中,实际被 调用的例程是Stublmplementation: :symboll(). ”。在某些点,包括接口类108的实实现104的动态库100被加载,240。随 后,所述实实现104被实例化以提供实实现对象,接口类108的实实现104包括 被配置以设置所述实现指针指向所述实实现对象的第二构造函数116,250。例 如,第二构造函数116可利用“Interface :SetInStanCe(),,来设置所述实现 指针指向所述实实现(RealImplementation)对象。随后,当客户端112使用 语法“本文档来自技高网...

【技术保护点】
一种方法,包括:定义一包含一具有一实现指针的静态成员的接口类;加载一包含所述接口类的一存根实现的主代码段;实例化所述接口类的所述存根实现以提供一存根实现对象,所述接口类的所述存根实现包括一第一构造函数,所述第一构造函数被配置以设置所述实现指针指向所述存根实现对象;加载一包含所述接口类的一实实现的动态库;和实例化所述接口类的所述实实现以提供一实实现对象,所述接口类的所述实实现包括一第二构造函数,所述第二构造函数被配置以设置所述实现指针指向所述实实现对象。

【技术特征摘要】
US 2009-4-3 12/384,359一种方法,包括定义一包含一具有一实现指针的静态成员的接口类;加载一包含所述接口类的一存根实现的主代码段;实例化所述接口类的所述存根实现以提供一存根实现对象,所述接口类的所述存根实现包括一第一构造函数,所述第一构造函数被配置以设置所述实现指针指向所述存根实现对象;加载一包含所述接口类的一实实现的动态库;和实例化所述接口类的所述实实现以提供一实实现对象,所述接口类的所述实实现包括一第二构造函数,所述第二构造函数被配置以设置所述实现指针指向所述实实现对象。2.如权利要求1所述的方法,进一步包括当所述实现指针被设置成指向所述存根实现对象时,存储所述实现指针的一备份。3.如权利要求2所述的方法,进一步包括 卸载所述动态库和所述接口类的所述实实现。4.如权利要求3所述的方法,进一步包括设置所述实现指针指向所述实现指针的所述已存储的备份。5.如权利要求1所述的方法,其中所述接口类是一增强单例接口类。6.如权利要求5所述的方法,其中所述增强单例接口类包括一抽象C++单例接口类。7.如权利要求1所述的方法,其中所述存根实现包括一第一阵列的指针,以及所述实 实现包括一第二阵列的指针。8.一种计算机编程产品,包括 一信号承载介质,其承载一个或多个用于定义一包含一具有一实现指针的静态成员的接口类的指令; 一个或多个用于加载一包含所述接口类的一存根实现的主代码段的指令; 一个或多个用于实例化所述接口类的所述存根实现以提供一存根实现对象的指令,所 述接口类的所述存根实现包括一第一构造函数,所述第一构造函数被配置以设置所述实现 指针指向所述存根实现对象;一个或多个用于加载一包含所述接口类的一实实现的动态库的指令;和 一个或多个用于实例化所述接口类的所述实实现以提供一实实现对象的指令,所述接 口类的所述实实现包括一第二构造函数,所述第二构造函数被配置以设置所述实现指针指 向所述实实现对象。9.如权利要求8所述的计算机编程产品,进一步包括一个或多个...

【专利技术属性】
技术研发人员:詹姆士A林恩
申请(专利权)人:LSI公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1