问题:怎么从LabVIEW中调用动态链接库DLL
假如DLL是C/C++ DLL:
- 找到头文件(*.h) 或许函数原型声明.
- 确认你需求调用的function(s) .
留意函数的参数是否包括了原始数据类型参数比方int, char, double, 等等或许是否包括了杂乱数据类型比方clusters. - 假如函数没有包括杂乱数据类型而且你有头文件(*.h), LabVIEW中一个很好的东西能够帮你简略地导入DLL (而且会协助你创立DLL的整个库).
你能够在Tools»Import»Shared Library (.dll)… 中找到该东西; 依照导游进行下去. - 怎么函数不含有杂乱数据类型可是没有头文件(*.h), 首要确认你运用的是C/C++ DLL由于大部分的编程环境将对这种DLL生成头文件.
假如你确真实处理C/C++ DLL, 找到该函数的相关文档,由于你需求确认那些在DLL中被调用的函数的参数. 一旦参数被确认,运用Call Library Function NodeLabVIEW中的函数手动调用该函数。 - 假如你需求调用的函数含有杂乱的数据类型,你需求手动运用LabVIEW中的Call Library Function Node功用直接调用, 在装备对话框中增加原型.
留意假如你的杂乱数据类型是结构体而不是原始数据类型 (int, double, char), 从依据C的编程言语中创立wrapper DLL. 由于 C/C++ 结构并不总是与LabVIEW的数据类型相对应的, wrapper DLL 能够近似的解析杂乱结构的内容而且把它们翻译成原始类型. 比方,假如在C中的一个结构体包括 char * (字符串或许字符数组), 能够创立一个wrapper function,LabVIEW将直接用char * type 调用它, 把它放在结构体中然后依照顺序调用DLL. 留意假如你有DLL源代码,能够直接修正DLL使得它能够接纳一个char * 而不是该结构体.
假如DLL是 .NET assembly:
- 为了在LabVIEW中运用.NET assembly , 简略地运用.NET 面板 (Connectivity».NET) 找出一切可用的函数.
- 首要运用结构节点来例示.NET assembly中的一个类.
- 经过简略地衔接结构节点的类引用到特点节点或许调用节点,运用特点节点和调用节点来获取该类的特点和办法
实例:
首要编程环境是常见的VC6.0(与其相关的MSDN并不多,下载衔接能够学到更多的东西,这个是英文版的)
新建项目 “Win32Dynamic-Link Library”项目名称“Dll_1”,确认后挑选“一个简略的DLL工程”点击“完结”。
其间下面是生成的Dll_1.cpp的代码:
// Dll_1.cpp : Defines the entry point for the DLLapplication.
//
#include “stdafx.h”
BOOL APIENTRY DllMain( HANDLE hModule,
{
}
下面讲修正“Dll_1.cpp”
在#include “stdafx.h”的下一行参加
extern “C” __declspec(dllexport) int fun(int a, int b);
其间int fun(int a, int b)这部分代码是咱们想用dll完成的函数原型声明
下面是DLL的默许进口函数,类似于C言语的main函数
BOOL APIENTRY DllMain( HANDLE hModule,
{
}
该比如无需修正此处,在这些代码后边参加:
int fun(int a,int b)
{
}
这便是咱们想用DLL完成的函数界说。
build之后就会在debug目录下生成咱们想要的Dll1.dll
自己运用LabView8.2来调用自己编写的DLL,其间DLL是上篇文章编写的。
首要新建一个VI,Ctrl+E切换到后边板,挑选“互联接口-〉库与可执行程序-〉调用库函数”
在后边板空白处单击,
双击后修正设置:
挑选“函数”面板,在途径中挑选DLL的相应方位,函数名是“fun”,线程是“在VI线程中运转”,调用标准是“C”
然后挑选参数面板
右侧函数名是回来类型,类型是数值,数据类型是有符号32位整型
然后增加2个参数
(由于我的计算机是32位,int型是32位的整型,此处的设置依据不同的计算机而定)
这时候点击确认,退出设置界面
点击运转OK了!