[发明专利]动态链接函数库与主应用程序共享静态链接函数库的方法有效
申请号: | 200610111912.1 | 申请日: | 2006-08-24 |
公开(公告)号: | CN101131635A | 公开(公告)日: | 2008-02-27 |
发明(设计)人: | 周宏霖;朱盈州 | 申请(专利权)人: | 凌阳科技股份有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 北京安信方达知识产权代理有限公司 | 代理人: | 龙洪;颜涛 |
地址: | 台湾省新竹科*** | 国省代码: | 中国台湾;71 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 动态 链接 函数库 应用程序 共享 静态 方法 | ||
技术领域
本发明涉及一种软件组件的链接技术,特别涉及一种动态链接函数库与主应用程序共享一静态链接库的方法。
背景技术
在设计手机开发工具时,为了要实现所见即所得的效果,通常软件工具设计者会针对开发工具环境额外设计支持的动态组件。然而如何让应用软件设计者能在设计阶段与执行阶段共享一样的程序代码,将动态组件通过标准化接口整合到开发环境中,将会是支持动态软件组件设计者重要的议题。
已知的动态软件组件技术中,主要以微软公司的OLE/COM的设计最为普遍。OLE/COM技术是通过PE32的档格式,来部署每一个OLE/COM组件。由于OLE/COM组件的角色如同动态链接函数库的运作机制,也因此在内存的对应中,所有的组件在彼此互相参考与函数调用时,都可以通过动态的COM接口(COM Interface),链接到目前调用的该OLE/COM组件所存在的内存中。也因此,对这样的软件组件设计时,内存对应的问题可以完全由操作系统内部的内存机制来处理。图1为已知一个应用程序MainApp.exe同时加载多个COM组件时的内存分布示意图。如图1所示,应用程序MainApp.exe同时参考多个COM组件(COM.DLL#1~COM.DLL#4、COM.OCX#5)。该多个COM组件在内存时也可以彼此互相参考对方。
而Borland公司也利用BPL(Borland Package Library)的动态加载套装(Package)格式,而达到动态加载的功能。对于用Delphi或是C++Builder发展工具(development tools)所开发的软件而言,若是希望经由执行对象(runtime object)而节省内存,则可通过BPL达成类似于DLL/COM的目的。其类似动态链接函数库(dynamic link library,DLL)技术,是通过内存对应,让周边支持的软件组件可以依据需求动态加载到内存中。
虽然,目前软件组件的领域已经有动态加载组件技术。但对于嵌入式系统(embedded system)而言,这类的动态加载软件组件反而显得过于庞大与复杂。因此在嵌入式系统的领域,通常只有两种选择:
(1)软件组件都通过静态链接设计:此技术除非拥有编译(compiler)技术和切割区块编译,否则无法通过软件组件来实现藉由设计工具得到所见即所得效果。
(2)提供两种版本的可视化软件组件:此技术好处是可将其中一个版本可视化软件组件针对设计工具需求提供接口,以实现所见即所得的设计效果。但坏处则是对于该可视化软件组件设计人员而言依赖性过高。该可视化软件组件设计工程师必须要付出较大心力。同时对于使用该可视化软件组件的客户而言,客户不容易自行设计新的组件加入其软件中。
针对嵌入式系统中动态加载的问题,已知技术是将应用程序编译成为执行文件,而将周边的函数库编译成为动态链接函数库(dynamic link library,DLL)。两者主要都跟核心函数库(core.lib)做链接。如此虽然可以满足动态实时加载的需求,同时又可以避免必须要特定编译器技术的限制。然而这种技术会形成内存空间的浪费。图2为已知一个应用程序Design_Form.exe同时加载两个动态链接函数库(DLL)时的内存分布示意图。如图2所示,因为该执行档(Design_Form.exe)与所有的动态链接函数库(DLL)都会跟核心函数库(core.lib)进行静态链接。因此如果有两个动态链接函数库(Widget.DLL#1、Widget.DLL#2)与一个执行档(Design_Form.exe),就会有三个核心函数库(core.lib)重复的程序代码在内存中出现,而形成内存空间的浪费。由于有的动态链接函数库(DLL)都会有一个静态链接的核心函数库(core.lib)程序代码。当有的动态链接函数库(DLL)被加载到内存后,反而会形成内存空间的浪费。
针对内存空间的浪费的问题,另一种解决方法是把所有的函数库都通过静态函数库链接。如图3所示,由于所有静态链接的核心函数库(core.lib)本体都只有一份,这种方式可节省内存的使用,然而这种技术却缺乏动态加载的好处,同时减少使用者对于系统设计上的弹性需求。因此,已知的文件系统仍存有诸多的缺失而有予以改进的必要。
发明内容
本发明的主要目的是提供一种动态链接函数库与主应用程序共享静态链接函数库的方法,能让同样的软件组件程序代码通过编译为动态链接函数库与静态函数库的方式分别在执行阶段与设计阶段达到一样的呈现效果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于凌阳科技股份有限公司,未经凌阳科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200610111912.1/2.html,转载请声明来源钻瓜专利网。