摘 要:介绍了动态链接库文件的特点。以labview和microsoft visual c++为编程工具,详细介绍了dll文件的创建过程。提供了开发自动测量系统时调用d ll文件编写子函数的例子,并给出了编程结果。本文提供的程序创建方法可推广应用于其他dll文件的开发。
关键词:动态链接库; labview;自动测量; 仪器控制
building and application of dll files in labview
li gaosheng,zhou dongming,he jianguo,bai yang
(college of electronic science and engineering, national univer sity of defense
technology, changsha, 410073, china)
abstract:features of dynamic link library(dll) is introduced detailed procedure s for building dll file is offered based on labview and microsoft visual c++ example of writing a subvi with dll when developing automatic measuring sys tem is given, as well as its result method offered here for programming can be extended to other development of dll files
keywords:dynamic link library;labview;automatic measu ring;equipment controlling
在开发自动测量系统时,经常遇到计算机与仪器的通信问题,涉及仪器控制及数据处理问题,labview语言在这一领域的应用有着独到的优势。动态链接库(dynamic link library,dll)是基于windows程序设计的一个非常重要的组成部分。labview开发中使用dll,可以使代码更简洁,内存资源的使用更经济,而且可以便捷地利用仪器厂商或第三方提供的仪器控制子程序加速开发进程。
1动态链接库的特点
动态链接是相对于静态而言的。而静态链接是指把要调用的函数或过程链接到可执行文件中,成为该文件的一部分,即可执行文件包含了运行时所需的全部代码。当多个程序都调用相同的函数时,内存中就会存在这个函数的多个copy,造成内存资源的浪费。而动态链接调用的函数代码并没有被复制到应用程序的可执行文件中,而仅在其中加入了调用函数的描述信息。只有当应用程序被装入内存并开始运行时,才与相应的dll建立链接关系。当执行到dll中的函数时,根据链接产生重定位信息,windows转去执行dll中相应的函数代码。dll是可共享和重载的,其代码执行速度很快。
dll具有如下特点:dll的编制与具体的编程语言及编译器无关,只要遵守其开发规范并安排正确的调用接口,无论使用何种语言编制的dll都具有通用性;使用dll不是将其库代码拷贝,而只在程序中记录函数的入口点和接口,程序执行时才将代码载入内存。多个程序使用相同的dll时,内存中只需装载一次,可以高效经济地使用内存;dll是基于windows的程序模块,他不仅包含可执行代码,还可以包含数据和各种资源,扩大了库文件的使用范围;dll中封装了一些可以被共享的资源,是w indows最重要的组成要素和windows api函数的封装形式,windows最基本的3大组成模块ke rnel,gdi和user都是dll文件,他的许多新功能也是通过dll来实现的。
labview中动态链接库的调用是通过clf(call library function) 节点实现的,如图1所示。clf可被用来调用32位的windows dll,macintosh系统的code fragment或unix中的s hared library。
2创建共享库文件
创建labview可以调用的外部代码库,需要完成下面3项任务:在labview中建立函数原型;完成c文件;在外部ide中创建library project。
2.1在labview中构造dll函数原型
首先新建一个vi并命名为“dlldemo.vi”。然后通过执行functions→advanced→call library function在diagram中放置clf节点,点击右键选择“configure”进行配置。funct ion name输入“avg_num”,calling conventions选择“c”;将parameter项中的return type改为“error”,其中type选择为numeric,data type为signed 32b integer。通过点击“add parameter after”按钮增加其他参数,各自的配置如表1所示。
经过上述设置之后,function prototype指示框中应出现如下信息:long avg_num(float*a, long size, float *avg); 至此,clf节点设置完毕,返回diagram将会发现clf节点下面增加了4个选项,分别对应于刚才设置的4个参数。在clf图标的右键中选择“create. c file”,保存为“dlldemo.c”.
2.2完成.c文件
打开dlldemo.c,可见其代码如下:
这个简单的例子不需要头文件,当创建更复杂的共享库文件时,必须包含所有相关的头文件。例如,当需要使用labview管理函数时,必须包含labview.lib,该文件位于labview安装目录下的cintools文件夹中。
2.3在外部集成开发环境(integrated developmen











