石鑫华视觉 发表于 2013-10-21 13:38:11

LabVIEW与外部程序间DLL文件的调用

LabVIEW与外部程序间DLL文件的调用什么是DLL文件DLL(动态链接库)文件是Dynamic LinkLibrary的缩写形式,是一种允许程序共享执行特殊任务所必需的代码和其他资源的可执行文件。其多数情况下是带有DLL扩展名的文件,但也可能是EXE或其他扩展名。Windows提供的DLL文件中包含了允许基于Windows的程序在Windows环境下操作的许多函数和资源。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。这些函数的可执行代码位于一个DLL中,该DLL包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL还有助于共享数据和资源,多个应用程序可同时访问内存中单DLL副本的内容。总之,DLL是一个包含可由多个程序同时使用的代码和数据的库。动态链接是相对于静态链接而言的。所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。换句话说,函数和过程的代码就在程序的exe文件中,该文件包含了运行时所需的全部代码。当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就浪费了宝贵的内存资源。而动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。仅当应用程序被装入内存开始运行时,在Windows的管理下,才在应用程序与相应的DLL之间建立链接关系。当要执行所调用DLL中的函数时,根据链接产生的重定位信息,Windows才转去执行DLL中相应的函数代码。由于向运行于Windows操作系统下的程序提供代码、数据或函数,程序可根据DLL文件中的指令打开、启用、查询、禁用和关闭驱动程序。在Windows操作系统中,DLL对于程序执行是非常重要的, 因为程序在执行的时候, 必须链接到DLL文件, 才能够正确地运行。而有些DLL文件可以被许多程序共用,因此程序设计人员可以利用DLL文件, 使程序不至于太过巨大。但是当安装的程序越来越多,DLL文件也就会越来越多, 如果当删除程序的时候, 没有用的DLL文件没有被删除的话, 久而久之就造成系统的负担了。  通过使用DLL,程序可以实现模块化,由相对独立的组件组成。因为模块是彼此独立的,所以程序的加载速度更快,而且模块只在相应的功能被请求时才加载。此外,可以更为容易地将更新应用于各个模块,而不会影响该程序的其他部分。例如,可能有一个工资计算程序,税率每年都会更改,当这些更改被隔离到 DLL中以后,我们无需重新生成或安装整个程序就可以应用更新。  总的来说,使用DLL文件有以下好处:1、多个应用程序可以共享代码和数据。比如Office软件的各个组成部分有相似的外观和功能,这就是通过共享动态链接库实现的。2、在钩子程序过滤系统消息时必须使用动态链接库。3、动态链接库以一种自然的方式将一个大的应用程序划分为几个小的模块,有利于小组内部成员的分工与合作,而且各个模块可以独立升级。如果小组中的一个成员开发了一组实用例程,他就可以把这些例程放在一个动态链接库中,供其他成员使用。4、实现应用程序的国际化,往往需要使用动态链接库。使用动态链接库可以将针对某一国家、语言的信息存放在其中。例如,在使用AppWizard生成应用程序时,我们可以指定资源文件使用的语言,这就是通过提供不同的动态链接库实现的。对于不同的版本,使用不同的动态链接库,常用的一些编程软件均可以编写DLL文件。DLL不是独立运行的程序,而是某个程序的一个部分,它只能由所属的程序调用,用户不能,也不需要打开它。LabVIEW调用DLL文件  LabVIEW支持通过调用DLL文件的方式与其它编程语言混合使用。比如,在实际的工程项目中,用户可以用C++语言实现软件的运算部分,并把这些功能构建在DLL文件中,然后再使用 LabVIEW编写程序的界面部分,并通过调用编写好的DLL来调用运算部分的功能。LabVIEW 中是通过Call LibraryFunction Node(CLN)节点来完成DLL文件调用的。创建一个新的VI,右击程序框图,在Functions Palette中依次选中Connectivity——Libraries&Executables工具栏即可找到该节点(图1)。
百度网盘:
http://pan.baidu.com/s/1dLxQ
页: [1]
查看完整版本: LabVIEW与外部程序间DLL文件的调用

LabVIEW HALCON图像处理入门教程(24.09)
石鑫华机器视觉与LabVIEW Vision图像处理PDF+视频教程11种全套
《LabVIEW Vision函数实例详解2020-2024》教程-NI Vision所有函数使用方法介绍,基于NI VISION2020,兼容VDM21/22/23/24