在LabVIEW中调用动态链接库(DLL)

在LabVIEW中调用动态链接库(DLL)

主页

技术支持

在LabVIEW中调用动态链接库(DLL)

在LabVIEW中调用动态链接库(DLL)

更新 Nov 8, 2020

环境

环境显示经过验证可用于本文描述的解决方案的产品。此解决方案也可能适用于其他类似产品或应用程序。

软件

LabVIEW

程式语言

C++

C

C# .NET

我希望能够在LabVIEW中调用以C/C++编写的代码或API。当我为C代码创建了一个的动态链接库(Dynamically Linked Library,DLL)后,我应该怎样在LabVIEW中调用这个DLL?

若要在LabVIEW中调用DLL,您首先需要确定库的种类是C/C++ DLL还是Microsoft .NET程序集。 .NET DLL也被称作.NET程序集,在.NET程序编写中被广泛地使用。 .NET DLL使用公共语言运行库(Common Language Runtime,CLR)和.NET框架(.NET Framework)对DLL中的功能函数进行组织和管理。

使用C/C++ DLL:

找到头文件(* .h)或功能函数原型定义。确定您需要调用的功能函数。注意函数所使用的参数是否仅包含原始数据类型(如整型,字符型,双精度浮点型等)还是包含有其他复杂数据类型(如结构,数组或向量)。如果功能函数的参数中不包含任何复杂数据类型且您有相应的头文件(* .h),那么您可以使用导入共享库向导创建包含该头文件中功能函数的LabVIEW库。您可以在工具»导入 »共享库(.dll)中找到该选项:

如果您没有头文件,那么您需要使用调用库函数节点以及正确的.DLL文档以调用DLL中的功能函数。您可以在下图所示的位置找到调用库函数节点:

双击调用库函数节点打开打开节点的配置窗口。在配置窗口的功能选项卡上,输入DLL的路径并选择需要调用的功能。

如果您要调用的函数包含复杂数据类型的参数,那么您需要在调用库函数节点的配置对话框中手动定义函数原型(如果当前DLL已使用类型库编译,参数数据和返回类型将被自动定义)。选择配置窗口中的参数选项卡,您需要在该选项卡中添加相应的参数并修改返回值类型,直到窗口底部的函数原型与DLL中的函数定义相匹配。

使用.NET程序集:

若要在LabVIEW中使用.NET程序集,您只需使用.NET功能选板(连接 ».NET )即可找到所有可用的功能函数。首先,您需要使用构造器节点将.NET程序集中的类实例化。双击构造器节点以显示选择.NET构造器对话框。

您只需将类的引用从构造器节点连接到属性节点或调用节点,便可以通过属性节点或调用节点简便地访问该类的属性和方法。

Additional Information

请注意,如果您所使用的复杂数据类型是具有多种基本数据类型(整型,双精度浮点型,字符型)的结构,则可以创建一个基于C的封装器DLL以简化函数调用。 C/C++构造中的数据类型并不总是与LabVIEW中的数据类型直接相关,而封装器DLL则可以提取复杂数据结构的内容并将它们转换为适当的原始数据类型。例如,您正在使用的一个DLL采用了一个C中的结构,其中包含一个char *(字符串或字符数组)类型。您的封装器DLL可以包含一个带有char *参数的封装函数,该函数将char *放入一个结构中,然后依次调用原始DLL。在LabVIEW中,您可以改为调用该封装器DLL函数。除此之外,如果您有DLL的源代码,您也可以直接修改DLL,让它直接接收char *类型的参数,而不是一个结构。在LabVIEW范例查找器中,您可以找到如何在LabVIEW中调用外部代码的完整功能范例。请参阅帮助>>查找范例>>与外部应用程序通信

相关链接Call Library Function Returns the Wrong Function Prototype and Function Parameters for DLLsWrapper VIs for C/C DLL functions using the Import Shared Library WizardCreatingExternal Link: Assemblies in the Common Language RuntimeCalling External APIsCan LabVIEW C? - Example 3: Using the Right Tools with LabVIEW​

其他支持选项

询问NI社区

在我们的论坛中与其他用户协作

搜索NI社区以寻求解决方案

请求工程师的支持

可能需要有效的服务协议或有效的软件订阅,同时支持选项因国家/地区而异

打开服务请求

了解软件订阅和服务

了解硬件服务计划

Was this information helpful?

Helpful

Not Helpful

Privacy

| Terms of Use

| Other Legal Info |

National Instruments Corporation. All rights reserved.

相关推荐

足球世界杯法语词汇(沪江法语)
365bet在线体育投注

足球世界杯法语词汇(沪江法语)

⌛ 01-13 👁️ 3246
李阳家暴案
365体育平台靠谱吗

李阳家暴案

⌛ 10-15 👁️ 6282
流量卡吞流量,为什么流量卡网速慢?
365体育平台靠谱吗

流量卡吞流量,为什么流量卡网速慢?

⌛ 10-11 👁️ 6610
2025年分析受众数据的最佳10工具
365bet育在线网址

2025年分析受众数据的最佳10工具

⌛ 10-10 👁️ 1716
如何进入PE系统?常见方法有哪些?
365bet在线体育投注

如何进入PE系统?常见方法有哪些?

⌛ 11-07 👁️ 9231
华为手环/手表测量心率
365体育平台靠谱吗

华为手环/手表测量心率

⌛ 09-28 👁️ 6224
饮酒量计算方法,一次喝多少酒,才不容易伤肝?
365bet在线体育投注

饮酒量计算方法,一次喝多少酒,才不容易伤肝?

⌛ 09-14 👁️ 5240
苹果iPhone 6 Plus(移动4G)
365bet在线体育投注

苹果iPhone 6 Plus(移动4G)

⌛ 09-21 👁️ 1246
沙特阿拉伯世界杯足球实力怎么样 盘点沙特各项大赛的历史战绩