一种基于LabVIEW的动态链接库的调用方法

文档序号:8208969阅读:1217来源:国知局
一种基于LabVIEW的动态链接库的调用方法
【技术领域】
[0001] 本发明涉及动态链接的调用方法。更具体地,涉及一种基于图形化编程语言 LabVIEW的动态链接库的调用方法。
【背景技术】
[0002] 动态链接库是一种在运行时连接的可执行代码和数据模块,是Microsoft Windows系统操作系统的重要组成部分,是一种特殊的且现在广为应用的函数库。动态链接 库DLL虽不是exe文件,但它属于Windows可执行文件。DLL由可执行模块组成,为进程提 供数据、代码和资源。与编译时使用的静态链接库不同的是,动态链接库独立于激活它们的 可执行文件,调用的地址转换是在加载时解决的。与静态连接库相比,动态连接库不管被多 少个程序设计,内存中都只有一个DLL的副本,因此提高了内存的使用率和程序运行速度, 而且各个DLL文件可以方便的独立修改和测试,模块化更强。
[0003] 动态链接库DLL是一种可执行模块,往往以单独的文件形式存在,在Windows下的 后缀名一般为.dll。动态链接库有两种使用方法:一个是静态调用,另外一种是动态调用。 DLL的静态调用类似于静态库的用法,程序一启动就把DLL中的代码装入内存。DLL的动态 调用稍微麻烦一点,但是它更加灵活,可以更为有效地使用内存。动态链接库技术是一种在 程序需要的时候才将有关代码装入内存的技术。实际当中动态链接库的可执行代码存在 于.dll文件中,而.dll文件是由编译器直接生成的。一个函数被编译运行后,其可执行指 令便存在于内存中了,而这段可执行指令在内存中的开始地址,是可以通过函数名得到的。 因此,只要把某个函数名所指单元开始的一段内存内容写入文件,便得到了一个简单的动 态链接库文件。
[0004] 动态链接库代码在运行时间加载的特性很重要。一个大型程序如果不使用动态链 接库,那么当这个程序的某一个功能需要升级或改进,必须写一些源代码,然后将整个程序 编译,连接形成一个新的可执行文件,最终给客户重新安装使用。这个过程需要花费很长时 间,哪怕只是给这个大型程序多写一行代码。可是,如果采用大量动态链接库构建整个应用 程序,那么只需要改写需要升级的动态链接库的源代码,重新编译连接后,发送给客户,客 户所做的仅仅是覆盖原来的动态链接库即可,不需要重新安装整个应用程序,因此使用动 态链接库构建整个应用程序是模块化设计程序的一个重要特点。
[0005] 从编程的角度,DLL应用程序需要知道DLL文件导出的API函数才能调用。所以 DLL文件本身并不可以运行,需要应用程序调用。程序的发布上,DLL和静态lib也是有差 别的。对于静态1 ib,程序在编译成可执行文件时会把静态链接库中的程序拷进可执行文件 中,所以lib文件是不用同可执行文件一同发布的。而链接到动态库DLL中时要通过一个 lib文件,lib文件保存了函数或类在DLL中的入口地址,可执行文件中相应存放的也是函 数地址,所以DLL和lib要同可执行文件一起发布。实际上只要遵循约定的DLL接口规范 和调用方式,用各种语言编写的DLL都可以相互调用。Windows提供的系统DLL,其中包括 了 Windows的API,在任何开发环境中都能被调用。
[0006] LabVIEW是美国国家仪器公司NI推出的32位的标准虚拟仪器开发平台。它是一 套专门为数据采集与仪器控制、数据分析与数据表达而设计的图形化编程环境,同时是基 于图形化编程语言--G-language的全新编程方法。
[0007] LabVIEW具有各种各样、功能强大的函数库,包括数据采集、GPIB、仪器控制、数据 分析、信号处理、数据显示及数据存储等功能。并且提供强大的数学分析库,涵盖统计、估 计、回归分析、线形代数、信号生成算法、时域和频域算法等众多科学领域。因此LabVIEW在 包括航空、航天、通信、汽车和医学等众多领域得到了广泛的应用,己成为测试与测量领域 的工业标准。但LabVIEW也存在不足,如不擅长于完成大量数据处理的任务;实现底层操作 能力不强等。在LabVIEW开发环境中若遇到这类问题。就可通过LabVIEW的高级应用,将 其不擅长或不易实现的任务通过能够或更适于完成此类任务的其它语言来实现。
[0008] 因此,需要提供一种基于LabVIEW的动态链接库的调用方法。

【发明内容】

[0009] 本发明的目的在于提供一种基于LabVIEW的动态链接库的调用方法。
[0010] 为达到上述目的,本发明采用下述技术方案:
[0011] 一种基于LabVIEW的动态链接库的调用方法,该方法包括如下步骤:
[0012] S1、确定动态链接库DLL文件的位置、函数原型,以及函数的参数及类型;
[0013] S2、选取函数调用的方式;
[0014] S3、利用LabVIEW中调用库函数节点CLF提取DLL文件中的函数;
[0015] S4、基于LabVIEW的规范配置DLL文件中的函数;
[0016] S5、输入被调用的函数名,得到基于LabVIEW配置完成的函数的形参类型和返回 值类型;
[0017] S6、将CLF中的节点和与其数据类型节点相对应的属性结点连接,完成利用 LabVIEW的代码设计。
[0018] 优选地,步骤S1中函数的参数及类型包括返回的数据的类型以及形参和实参的 数据类型。
[0019] 优选地,步骤S2中函数调用的方式为C语言中stdcall调用方式。
[0020] 优选地,步骤S3中CLF包括输入端和输出端,CLF具有函数的可扩展功能,可显示 已连线的输入端和输出端的数据类型。
[0021] 优选地,步骤S5中的返回值为DLL中函数的返回值。
[0022] 本发明的有益效果如下:
[0023] 本发明所述技术方案适用于LabVIEW中动态链接库的调用方法,应用了 LabVIEW 中"调用库函数节点"实现了动态链接库的调用基于LabVIEW的动态链接库的应用,一方面 通过LabVIEW中使用CLF--Call Library Function函数来调用其它语言产生的动态链 接库函数,从而完成LabVIEW无法胜任的工作。例如LabVIEW无法识别的采集卡的驱动。另 一方面由于LabVIEW在测试与测量领域的强大功能,因此可以利用LabVIEW生成各种相关 动态链接库函数,方便其它语言程序调用,从而弥补它们在测试、信号分析领域的函数和功 能模块较少的不足,以及程序编制难度较大等缺点,提高了程序开发的效率,增加了应用软 件的功能。
【附图说明】
[0024] 下面结合附图对本发明的【具体实施方式】作进一步详细的说明。
[0025] 图1示出调用库函数节点CLF具体函数示意图。
[0026] 图2示出LabVIEW调用动态链接库的配置示意图。
[0027] 图3示出PmacSelect函数动态链接库的配置图。
[0028] 图4示出LabVIEW使用的PmacSelect子函数具体内容示意图。
[0029] 图5示出OpenPmacDevice函数动态链接库的配置图。
[0030] 图6示出LabVIEW使用的OpenPmacDevice子函数具体内容示意图。
[0031] 图7示出PmacGetControlResponseA函数动态链接库的配置图。
[0032] 图8不出LabVIEW使用的PmacGetControlResponseA子函数具体内容不意图。
[0033] 图9示出基于LabVIEW的动态链接库的调用方法流程图。
【具体实施方式】
[0034] 为了更清楚地说明本发明,下面结合优选实施例和附图对本发明做进一步的说 明。附图中相似的部件以相同的附图标记进行表示。本领域技术人员应当理解,下面所具 体描述的内容是说明性的而非限制性的,不应以此限制本发明的保护范围。
[0035] 本实施方式提供的基于LabVIEW的动态链接库的调用方法,包括如下步骤:
[0036] S1、确定动态链接库DLL文件的位置、函数原型,以及函数的参数及类型,函数的 参数及类型包括返回的数据类型及形参和实参的数据类型;对应了调用库函数节点中路径 输入参数,即需要确定调用的动态链接库的路径,在实际的调用过程中需要选择所要调用 的库函数在程序框图中所指定的链接路径,当链接路径选择后就会在调用库函数节点上显 示该输入端的连线;
[0037] S2、选取函数调用的方式,调用函数的方式是采用C语言中stdcall调用方式,其 中LabVIEW和32位系统C语言Win32数据类型对照表如表1所示;
[0038] 表 1
【主权项】
1. 一种基于UbVIEW的动态链接库的调用方法,其特征在于,该方法包括如下步骤: 51、 确定动态链接库化L文件的位置、函数原型,W及函数的参数及类型; 52、 选取函数调用的方式; 53、 利用UbVIEW中调用库函数节点化F提取化L文件中的函数; 54、 基于UbVIEW的规范配置化L文件中的函数; 55、 输入被调用的函数名,得到基于UbVIEW配置完成的函数的形参类型和返回值类 型; 56、 将CLF中的节点和与其数据类型节点相对应的属性结点连接,完成利用UbVIEW的 代码设计。
2. 根据权利要求1所述的基于LabVIEW的动态链接库的调用方法,其特征在于,所述步 骤S1中函数的参数及类型包括返回的数据的类型W及形参和实参的数据类型。
3. 根据权利要求1所述的基于LabVIEW的动态链接库的调用方法,其特征在于,所述步 骤S2中函数调用的方式为C语言中stdcall调用方式。
4. 根据权利要求1所述的基于UbVIEW的动态链接库的调用方法,其特征在于,所述 步骤S3中CLF的具体函数的参数包括;路径输入参数、错误输入参数、库函数的范例输入参 数、路径输出参数、错误输出参数、返回值和库函数的范例输出参数。
5. 根据权利要求1所述的基于LabVIEW的动态链接库的调用方法,其特征在于,所述步 骤S3中CLF包括输入端和输出端,CLF具有函数的可扩展功能,可显示已连线的输入端和 输出端的数据类型。
6. 根据权利要求1所述的基于LabVIEW的动态链接库的调用方法,其特征在于,所述步 骤S5中的返回值为化L中函数的返回值。
【专利摘要】本发明公开一种基于LabVIEW的动态链接库的调用方法,包括:确定动态链接库DLL文件的位置、函数原型,以及函数的参数及类型;选取函数调用的方式;利用LabVIEW中调用库函数节点CLF提取DLL文件中的函数;基于LabVIEW的规范配置DLL文件中的函数;输入被调用的函数名,得到基于LabVIEW配置完成的函数的形参类型和返回值类型;将CLF中的节点和与其数据类型节点相对应的属性结点连接,完成利用LabVIEW的代码设计。本发明所述技术方案通过LabVIEW中使用CLF来调用其它语言产生的动态链接库函数,从而完成LabVIEW无法胜任的工作,提高了程序开发的效率。
【IPC分类】G06F9-46
【公开号】CN104536812
【申请号】CN201410838583
【发明人】杨金涛, 马永光
【申请人】北京无线电计量测试研究所
【公开日】2015年4月22日
【申请日】2014年12月30日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1