理论教育 动态链接库技术(DLL)详解

动态链接库技术(DLL)详解

时间:2023-06-17 理论教育 版权反馈
【摘要】:COM组件是符合组件对象模型标准的、运行在Windows环境下的一种特殊动态链接库。实时动态链接库RTDLL 数控系统中实时任务是指加减速处理、插值运算、位置控制、离散逻辑控制等。对于以上强实时性任务,我们采用RTX提供的动态链接库RTDLL技术来完成。隐式连接是指在应用程序启动时立即加载RTDLL;显式连接方式则可以在应用程序运行时,根据需要决定装载哪个RTDLL,以及在什么时候加载或卸载。

动态链接库技术(DLL)详解

采用面向对象编程可实现源代码一级的复用,在软件重用领域中属于白盒复用,需要根据用户需求对已有程序代码进行适应性修改后才能使用。与白盒复用相对的软件复用方式是黑盒复用,它主要是基于二进制代码的复用,包括可执行程序的复用和基于函数库的复用。黑盒复用是指对已有程序或构件不需作任何修改,直接复用,这也是理想的复用方式[16,77]

函数库简单地说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码和数据可以供其他的程序重复使用。例如:Microsoft Visuai C++提供的MFC类库及Boriand C++提供的OWL(ObjectWindowsLibrary,面向对象的窗口库)类库,它们为Windows应用程序的开发提供了最基本的代码,开发人员直接使用这些类库就可以做出一些基本的Windows应用程序来。程序函数库可分为两种类型:静态函数库和动态函数库。静态函数库是在程序执行前就加入到目标程序中,而动态加载函数库则可以在程序运行的任何时候动态加载。动态库特别适合在系统需要模块的功能时才进行动态加载的场合,并符合数控系统的开放性需求

以模块作为开放式数控系统的基本单元,使数控系统能够适用于不同的应用需求(如车、铣、钻等),巨模块必须具有可复用的特征。采用函数库的形式开发数控功能模块是一种理想的选择。针对数控系统构成模块所完成任务的实时性需求不同,可以将模块分为非实时和实时模块两类,并分别采用COM组件和实时动态链接库RTDLL(Reai-Time Dynamicai Linked Library)的形式实现。

(1)COM组件 COM是Microsoft提出的组件标准,它不仅定义了组件程序之间进行交互的标准,而巨提供了组件程序运行所需要的环境。COM组件是符合组件对象模型标准的、运行在Windows环境下的一种特殊动态链接库。COM标准要求组件具有统一的规格和规范的使用方法,并将特定的功能和行为封装在内部,再通过规范的接口对外提供服务。COM组件的主要特征有:面向对象的特征、客户/服务器特性、语言无关性、对进程的透明性和它的可重用机制[78]。COM组件自身具有的优势,为实现开放式数控系统的可互换性、互操作性、可伸缩性等要求提供了充分的技术保障。

COM组件可以利用Visuai C++开发,它提供了许多简化COM组件开发的编程工具。例如:利用COM开发向导能够自动生成骨架代码和基础结构,所以开发人员无需过多地关心像全局唯一标识符GUID(Giobaiiy Unique Identifier)、接口派生、类工厂等一些细节问题,而把注意力放在定义接口、编写接口的实现代码上,再通过接口向外提供服务[79,80]。(www.daowen.com)

数控系统的非实时任务包括数控程序的输入与编辑,系统信息与加工信息的显示、译码、刀具补偿等。这些任务并不要求很强的实时性,使用Windows的定时器就可以满足要求,因此利用COM技术可将这些任务编制成为在Windows环境下运行的COM组件。

(2)实时动态链接库RTDLL 数控系统中实时任务是指加减速处理、插值运算、位置控制、离散逻辑控制等。这些强实时性任务必须在RTX环境下完成,才能满足其实时性要求。RTX支持面向对象编程技术,并在Visuai C + +编程环境提供了一个向导工具,具有Windows开发经验的人员可快速掌握RTAPI并进行实时编程。对于以上强实时性任务,我们采用RTX提供的动态链接库RTDLL技术来完成。RTDLL类似于Windows的动态链接库,可以在RTX环境下动态加载,而RTDLL所具有的实时性是以RTX的实时API为保障基础[81,82]。为实现实时编程,RTX提供了三类实时API(reai-time API):第一类为RTAPI,是由RTX单独提供的一套实时API,这类函数均以宇母“Rt”为前缀;第二类为RTX支持的Win32 API,RTX对部分Win32API函数的内部实现进行了修改,使之具有实时性能,巨该类函数在Windows和RTSS环境下的应用形式完全保持一致;第三类为RTX支持的C运行时库函数,由RTX提供的具有实时性能的C运行时库函数,用来替代相对应的Windows C运行时库函数。

RTDLL可以采用隐式连接或显式连接方式处理。隐式连接是指在应用程序启动时立即加载RTDLL;显式连接方式则可以在应用程序运行时,根据需要决定装载哪个RTDLL,以及在什么时候加载或卸载。显式加载的函数为Load Library(LPCTSTR IpLibFiieName),通过ipLibFiieName指定所加载实时动态链接库的名宇。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈