如何在LabVIEW下调用DLL

如何在LabVIEW下调用DLL,第1张

要从LabVIEW中调用动态链接库(DLL),首先要确定是哪种类型的DLL。 基本上有两种类型的DLL需要考虑:C/C++ DLL 和Microsoft .NET assembly. C/C++ DLL 用C, C++, 或其他编程语言生成(除了 .NET 语言) 比如 Java, Fortran, 或Visual Basic 6.0. .NET DLL 也被称为 ".NET assembly" 或者就是"assembly". 这个术语的区别在于 .NET DLL 与其他DLL的工作方式不同. .NET DLL使用 Common Language Runtime (CLR) 和 .NET Framework "处理" DLL中的函数

. 如果DLL是C/C++ DLL:

1 找到头文件(*.h) 或者函数原型声明.

2 确定你需要调用的 function(s) . 注意函数的参数是否包含了 原始数据类型参数比如int, char, double, 等等或者是否包含了复杂数据类型比如clusters.

3 如果函数没有包含复杂数据类型并且你有头文件 (*.h), LabVIEW中一个很好的工具可以指斗帮你简单地导入DLL (并且会帮助你创建DLL的整个库). 你可以在Tools?Import?Shared Library (.dll)... 中找到该工具按照向导进行下去唯弯磨.

4 如何函数不含有复杂数据类型但是没有头文件(*.h), 首先确 定你使用的是C/C++ DLL因为大部分的编程环境将对这种DLL生成头文件. 如果你确实在处理C/C++ DLL, 找到该函数的相关文档,因为你需要确定那些在DLL中被调用的函数的参数. 一闹派旦参数被确定,用 Call Library Function Node LabVIEW中的函数手动调用该函数。

5 如果你需要调用的函数含有复杂的数据类型,你需要手动使用 LabVIEW中的 Call Library Function Node功能直接调用, 在配置对话框中添加原型.

LabVIEW创建DLL的方法

为了方便大家的学习,下面我为大家整理了关于LabVIEW创建DLL的方法,希望对你有所帮助。

1、LabVIEW也可以创建DLL

2、调用规范说明:

C调用规范时,调用方负责清空堆栈。使用标准调用规范时,被调用函数负责清空堆栈。

所以要确认您选择了和DLL相同的调用规范

3、调用库函数节点(CLF)中线程模式:

在UI线程中运行(Run in UIThread )模式在任意线程中运行(Reentrant)模式。

Runin UI Thread 表示在用户界面线程中调用,DLL 的执行期将等到用户界面线程执行DLL的导出函数调用时才开始Reentrant 表示允许多个线程同时调用这个DLL 。

4、线程模式的选择原则:

如果DLL 为线程安全———简单地说,就是编制DLL过程中,充分考虑了线程保护的同步机制,如使用临界区、互斥、信号量等,那么可以选用Reentrant 方式,这将有助于提高DLL调用的性能如果你不确定DLL 是否为线程安全,选Run in UI Thread。

5、以册蠢带下是LabVIEW Help中有关线程模式选择原则的说明:

线程——控制“调用库函数节点”继续在VI当前执行的线程执行或转档饥向用户界面线程。默认状态为在UI线程中运行。

在UI线程中运行——指定“调用库函州芦数节点”必须在用户界面线程中运行。LabVIEW生成的共享库在UI线程中运行时,如通过在程序框图中指定路径动态加载该共享库,可导致LabVIEW挂起。

在任意线程中运行——指定“调用库函数节点”继续在VI当前执行的线程上运行。必须确保多个线程可同时调用函数。

注:对LabVIEW生成的.共享库的调用必须指定为在任意线程中运行。如配置“调用库函数节点”调用LabVIEW生成的共享库并指定在UI线程中运行,LabVIEW将可能挂起并请求重新启动系统。

6、综上所述:LabVIEWDLL具有足够的可以让多个线程调用的安全性。可以放心的以“在任意线程中运行”模式运行LabVIEW。如果以“在UI线程中运行”模式运行,如果动态加载DLL路径会导致程序挂起。

7、Labview编写的dll还有一个优点:调用时不需要为输入参数的类型发愁,他是自动加载。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11974748.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存