通过LabVIEW创建与调用动态链接库(.dll)文件

通过LabVIEW创建与调用动态链接库(.dll)文件

1. 动态链接库及其特点

DLL 是一个包含可由多个程序同时使用的代码和数据的库。 例如,在 Windows 操作系统中,Comdlg32.DLL 执行与对话框有关的常见函数。 每个程序都可以使用该 DLL 中包含的功能来实现“打开”对话框。 这有助于促进代码重用和内存的有效使用。

通过使用 DLL,程序可以实现模块化,由相对独立的组件组成。 例如,一个计帐程序可以按模块来销售。 可以在运行时将各个模块加载到主程序中(如果安装了相应模块)。 由于模块是彼此独立的,所以程序的加载速度更快。 而且模块只在相应的功能被请求时才加载。

此外,可以更为容易地将更新应用于各个模块,而不会影响该程序的其他部分。 例如,您可能具有一个工资计算程序,而税率每年都会更改。 当这些更改被隔离到 DLL 中以后,您无需重新生成或安装整个程序就可以应用更新。

DLL的优点包括以下方面:

  • 使用较少的资源当。多个程序使用同一个函数库时,DLL 可以减少在磁盘和物理内存中加载的代码的重复量。 这不仅可以大大影响在前台运行的程序,而且可以大大影响其他在 Windows 操作系统上运行的程序。
  • 推广模块式体系结构DLL 。有助于促进模块式程序的开发。 这可以帮助你开发要求提供多个语言版本的大型程序或要求具有模块式体系结构的程序。 模块式程序的一个示例是具有多个可以在运行时动态加载的模块的计帐程序。
  • 简化部署和安装。当 DLL 中的函数需要更新或修复时,部署和安装 DLL 不要求重新建立程序与该 DLL 的链接。 此外,如果多个程序使用同一个 DLL,那么多个程序都将从该更新或修复中获益。 当使用定期更新或修复的第三方 DLL 时,此问题可能会更频繁地出现。

2. 通过LabVIEW创建动态链接库

本文通过一个范例程序示意通过LabVIEW创建动态链接库的过程。示例创建了一个包含加法(add.vi)和乘法(multiply.vi)程序的动态链接库项目。

对每个VI,确保所有必须的输入和输出都连接到了LabVIEW前面板的接线板上。

在项目浏览器中选择程序生成规范,选择新建,动态链接库dll。

在属性对话框中命名dll及其保存路径。在源文件中选择要作为函数导出到dll的vi,这里依次选择add和multiply两个vi,在选择时弹出的对话框里定义函数原型,点击加号依次添加x和y两个变量,并定义返回类型。在辞职后,选择对应函数并点击定义原型可以编辑dll函数原型。

可以在预览中预览创建的文件。点击生成可以在指定文件夹中生成动态链接库及必要的.lib文件和.h头文件。

新版本的LabVIEW中可能出现“由于函数或参数名称非法,编译DLL时发生错误。请确保函数或参数名称为合法C标识符并且与LabVIEW头不冲突。”错误,这时,双击程序生成规范下的dll文件重新编辑文件生成规范,选择高级选项,并取消“为Teststand或调用库节点包含类型库”前的对号。重新生成就可以成功生成dll了。

3. 从LabVIEW调用动态链接库(dll)

要调用DLL,首先必须确定该库是C / C ++ DLL还是Microsoft .NET Assembly / .NET DLL。如果函数不包含任何复杂的数据类型,并且具有头文件(* .h文件),则可以使用导入共享库向导创建一个包含该头文件中的函数的LabVIEW库。可以在工具»导入»共享库(.dll)…中找到该选项继续执行向导。

如果没有头文件,则需要使用“ 调用库功能节点”以及.DLL的正确文档。以下是调用库文件的VI路径。这需要知道库文件包含的函数内容及参数(即头文件中应该包含的内容),本例中由于函数是前文提供的,因此可以采用本方法。

双击并配置该节点,选择需要调用的功能,本例中输入Multiply函数,也可以根据需要输入Add函数。在参数选项卡输入对应的函数参数及类型。即可实现调用。

示例项目下载地址:

链接:https://pan.baidu.com/s/1EtxFur8NNlhgf27CLU0oyg?pwd=0ahh
提取码:0ahh


作者
魏智勇(John)
加入讨论

此站点使用 Akismet 来减少垃圾评论。了解我们如何处理您的评论数据

魏智勇(John)

站长,80后,创业者,擅长工业自动化与信息化技术,熟悉各种PLC,组态软件,熟悉计算机技术,熟悉LabVIEW、C,C#,JavaScript程序设计技术。