LabVIEW调用动态链接库dll

合集下载

labview调用动态库Dll

labview调用动态库Dll

利用LabView调用动态链接库.dll
2013.10蜗牛首先确定要实现的功能:
例如:实现c=a+b;动态库的功能是完成加法运算;
第一部分:生成dll库文件的工程;
1)利用vs2010或者VC++编译器建立一个可以生产动态库的工程,在文件》》新建》》项目,选择Visual C++下面的Win32的控制台运用程序;输入工程名和路劲;如图所示会在VC++的文件夹下建立一个test的文件夹;点击确定》》下一步;选择DLL;如下图所示
点击确定后;自动增加的函数文件如下图左边所示;蓝色阴影部分为自己增加的函数功能;
DLL内申明并定义函数的分为两种:第一种为DLL导出函数,第二种为DLL 为内部函数;其中DLL导出函数可以被其他函数调用,DLL函数只能被内部函数调用,应用程序无法调用他们。

所以在DLL中函数add之前有个关键字_declspec(dllexport)来限制,表示函数为dll导出函数。

然后在生成里面点击生成和编译;那么在所建的工程路劲的Debug文件夹下生产一个test.dll的文件;记住这个路劲;
第二部分:编写LabView程序
导出调用LabView调用动态库节点;放置到程序框图版;
双击程序框图中的图标,按如下所示设置,将路劲和函数名写好;在参数设置栏中根据我们在vc中设置的参数类型选择好,点击ok就行;
根据我们定义的a、b类型为int,编辑好界面后,运行程序,调用DLL完成。

LabVIEW平台下调用DLL实现PC_104数据采集

LabVIEW平台下调用DLL实现PC_104数据采集
(解放军炮兵学院信息工程教研室) 袁 魏 华 韩 裕 生 张 伟 伟 李 小 明
YUAN Wei-hua HAN Yu-s heng ZHANG Wei-wei LI Xiao-ming
摘要: LabVIEW 是 一 个 高 效 的 图 形 化 软 件 开 发 环 境 , 在 数 据 采 集 和 测 试 测 量 中 应 用 广 泛 。 但 在 PC- 104 硬 件 平 台 下 使 用
嵌入式计算机应用
中 文 核 心 期 刊 《 微 计 算 机 信 息 》( 嵌 入 式 与 S OC )2008 年 第 24 卷 第 4-2 期
(2)ADT700.h— ——ADT700 驱动程序头文件。
(3)ADT700.cpp— ——ADT700 数 据采 集 卡 的驱 动 程 序代 码 主
文件 , 该 文 件 中 定 义 了 操 作 ADT700 完 成 数 据 采 集 和 输 出 的 主
Call Library Function 节点, 将选择好的 Call Library Function 节
据 采 集与 控 制 系统 。该 卡 可实 现 16 路 单端 或 8 路 差分 模 拟 信
(1)WinIO.dll— ——在 Windows32 操 作 系 统 环 境 下 操 作 硬 件
号输 入 , 具有 12 位 数 字分 辨 率 , 最大 A/D 采 样 率为 100KHz, 量 端 口地 址 所 需要 的 链 接库 文 件 , 由于 Windows32 操 作 系统 采 用
在 Windows 32 操 作 系 统 环 境 下, 可 以 使 用 VC++6.0 建 立
2 PC/104 数据采集 卡 ADT700 简介
DLL 文 件 , VC++ 中 可 以 建 立 两 种 DLL: 使 用 MFC(Microsoft Function Class)的 DLL 和不使用 MFC 的 DLL。每种 DLL 都有它

再谈USB开发:LabVIEW调用DLL文件实现STM32+USB+HID双向通信

再谈USB开发:LabVIEW调用DLL文件实现STM32+USB+HID双向通信

4、结尾
到了这里,我们可以看到,LabVIEW 调用 DLL 文件是很简单的,关键是我们要知道 DLL 文件中的函数原型! 我们也可以比较一下通过 VISA 和通过 LabVIEW 调用 DLL 文件实现 USB HID 双向通 信的的优缺点。 1、通过 VISA,我们可以简单和快速地开发 STM32 USB HID 通信,不必了解底层函 数的原型,系统稳定可靠。但需要我们安装庞大的 VISA 驱动程序,而且硬件需要被 MAX 识别。 2、通过 LabVIEW 调用 DLL 文件,我们不需要安装任何驱动程序,发挥 USB HID 免 驱动的优点,但需要我们了解 DLL 文件中的函数原型,而且如果 DLL 文件做得不好的话, 有可能引起程序崩溃。 其 实 我 们 也 可 以 调 用 windows 系 统 自 带 的 hid.dll 文 件 的 , 一 般 在 以 下 路 径 : C:\WINDOWS\system32。现在的 USB HID 上位机软件,一般都是调用微软的 hid.dll 来实现 的。这个留给用户去完成了(不难的,只要知道函数原型就可以了) 。 其实 LabVIEW 作为一种通用的编程语言, 和 VC++一样, 也可以封装和创建 DLL 文件 的,有兴趣的用户可以了解一下,这里就不详细介绍了。
ห้องสมุดไป่ตู้
2、LabVIEW调用我们创建的DLL文件
LabVIEW 的“调用库函数节点”在以下路径: “互连接口”“库与可执行程序” “调用库函数节点”
我们把这个控件放在 VI 的程序框图中:
双击控件后,可以打开如下配置窗口:
“库名/路径”比较简单,就是 DLL 文件的路径了。而“线程” ,一般都是选择“在 UI 线程中运行” 。在“调用规范”中,因为是调用我们写的 DLL 文件,所以选择“C” 。如果 是调用 windows 系统中的 DLL 文件,那么选择“stdcall(WINAPI) ” 。 我们把 DLL 文件装进来之后, 就可以看到 DLL 文件中包含的所有函数了, 在 “函数名” 下拉列表中可以看到。

Labwindows调用外部DLL文件的问题

Labwindows调用外部DLL文件的问题

1. dll文件的编写(1)打开软件Labwindows/CVI,点击File->New->project新建一个工程*.prj,如图所示。

然后保存为example.prj。

(2)用同样的方式,新建一个*.c文件,然后按照下图所示,在Edit->Insert Construct->Dllmain,然后软件会自动在c文件中添加以下两个函数:int __stdcall DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)int __stdcall DllEntryPoint (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)这两个函数是DLL动态链接库必须包含的两个函数,函数的具体内容为:#includeint __stdcall DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved){switch (fdwReason){case DLL_PROCESS_ATTACH:if (InitCVIRTE (hinstDLL, 0, 0) == 0)return 0;/* out of memory */break;case DLL_PROCESS_DETACH:CloseCVIRTE ();break;}return 1;}int __stdcall DllEntryPoint (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved){/* Included for compatibility with Borland */return DllMain (hinstDLL, fdwReason, lpvReserved);}然后在上面C源文件中编写相关的函数,然后保存文件为example.c。

Labview DLL调用指南-非常有用

Labview DLL调用指南-非常有用

【转】labview dll的调用【转载】武汉高收入高福利公司排行榜在LabVIEW中调用DLL的整个过程及注意事项2011-09-15 21:25:44| 分类:驱动开发| 标签:|字号大中小订阅1. LabVIEW支持的数据类型< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />另外,可参考…\Program Files\National Instruments\LabVIEW 2009\examples\dll\data passing\Call Native Code.llb\Call DLL.vi。

…此VI列举了LabVIEW与C语言中兼容的数据类型。

见下表。

2. 在VI里调用DLL时,在DLL的左侧给输出端口添加初始化的值。

给输出端口添加初始化值的目的是分配内存给输出端口。

该初始化数组元素的个数至少为实际输出数组的个数。

若过小,则DLL不正常运行;若相等,则DLL正常运行;若过大,则DLL的数组输出端口除有效数据外,还有其他一些为0的非有效数据。

< xmlnamespace prefix ="v" ns ="urn:schemas-microsoft-com:vml" />3.使用DLL的步骤1)制作子VI,添加控件接口到连接端(connector)。

2)在新建的VI中添加DLL,在DLL中指定其路径,会自动添加该DLL包含的输入输出端口。

对于数值型输出,选择Point to value。

选中“Specify path or diagram”,表示动态调用该DLL,此时路径取决于最上端的路径输入端,Library name or path里输入的路径无效。

在parameters页,系统会自动添加DLL的输入输出端口,如果添加不完整,则需要再手动添加额外的输入端或者输出端。

LabVIEW动态链接库DLL基础知识

LabVIEW动态链接库DLL基础知识

0.参考示例:LabVIEW1.调用库函数节点2.配置参数2.1.返回参数类型:有Void,Numeric和String三种,如下图所示。

(1)VoidVoid is only available for return type and is not available for other parameters. Use Void for the return type if your function does not return any values.Even if the function you call returns a value, you can use Void for the return type. When the function returns a value and you select Void as the return type, the value returned by the function is ignored.(2)Numberic(pointer-sized integer),以winpcap.dll为例,如下图。

另外数据类型中的“指针大小整型”帮助文档的解释如下:(3)String目前还没碰到过,等遇到时再补充。

2.2.输入(出)参数其类型共有9种,常用的有数值、数组、字符串和匹配值类型。

2.2.1.数值需要注意的是,其传递选项有“值”和“指针”两种,分别对应值传递和指针传递。

a. 数据类型为int32函数原型为void LVint32(int32 input, int32 *output);本函数计算输入值的平方,然后将结果显示在“输出”中。

返回类型为void,input类型为int32,值传递output类型为int32,指针传递注:如将结果返回至某个控件,该控件本身即可为返回数据提供必要的内存空间。

b. 数据类型为float64函数原型为void LVfloat64(float64 input, float64 *output);本函数计算输入值的平方,然后将结果显示在“输出”中。

Labview中dll 制作和使用

Labview中dll 制作和使用

Labview 下建立dll及其使用1、建立动态连接库的C代码调用1.1建立函数原形1)后面框图程序中,调用CLF节点;2)配置一个函数原形,比如long add2(long a,long b),设置调用规程为C,其它不变,确定,退出;3)右键CLF节点,create C file,保存名字为code.cpp,以供VC++编译使用;1.2 编辑源代码文件1)将所需要的labview头文件复制到code.cpp所在目录中,包括:extcode.h platdefines.h fundtype.h;2) 打开code.cpp,添加关键词extern “c”、_declspec(dllexport)并包装;然后输入函数的功能代码,如果1个dll里面需要多个函数,则需要声明多个函数的原形。

本例子采用了2个函数,add 和mult2./* Call Library source file */#include "extcode.h"extern "C"{_declspec(dllexport) long add2(long a, long b);_declspec(dllexport) long mult2(long a, long b);}_declspec(dllexport) long add2(long a, long b){/* Insert code here 加法*/return(a+b);}_declspec(dllexport) long mult2(long a, long b){return(a*b); /* 乘法*/}2、VC++中编译产生dll1)建立project ,file→new-> win32 Dyna,mic Link Library,输入工程名,选择an empty dll project;2)添加code.cpp到source file,添加extcode.h platdefines.hfundtype.h到head files里面;3)设置dll参数project→settings→c/C++中设置参数:category:code generation ;根据函数要求可以选择1Byte\4 Byte\ 8Byte,采用默认就可以;multithread;其余默认可以;自己也可以微调;4)Build Build code.dll;5)Ok!3采用Labview测试验证。

Labview调用dll详解(C语言DLL

Labview调用dll详解(C语言DLL

Ccall和standcall的区别?自己创建的采用Ccal?你都试过吗?
4 n! W5 G+ P' I- M' B- U7 P' AC能用new来分配内存?也许我上学时学的不是ansi c
解释前先说一句废话,只有多了解C才能调用好DLL。LV自带的DLL解析(也就是导入共享库)是没用的。下面继续说这个函数。extern "C" ZLDS10X_DLL_API SENSOR_HANDLE ZLDS10X_DLL_stdcall ZLDS10X_Open(char * portnum , int baud , int timeout , int address); 这里面有四个参数一个返回值。SENSOR_HANDLE 是头文件里面用宏定义的数据类型int 。在返回值选项里面“类型”我们选择“数值”;“数据类型”我们选择int16。值得注意的是,由于C版本众多,而且标准C对于数据类型没有完全规定死,数值的“数据类型”有时候要参看具体的编译器。标准C规定:int不小于16位,long不小于32位。一般可以int选择I16,long选择I32(关于有符号数和无符号数的区别见C,不解释,64机另论)。char*表明传递的字符串,C语言的字符串等价于U8数组,所以“类型”我们选择“数组”;“数据类型”我们选择U8, “数组格式”选择“数组数据指针”。另外三个参数不用多解释。传递的是数值,数据类型选择好就可以了。看起来我们配置好了这个函数,对吧,但是运行就会得到一个-1的结果。-1代表错误。其中的原因在于C语言和labview的不同。C语言里面的字符串是以NULL(\0)结束的,但是labview不是,所以我们要将这个因素考虑进去,具体做法是:使用连接字符串。然后转化为U8,这样就可以啦。顺便解释一下,open的作用是打开串口,原型是C里面的creatfile函数,串口通信的第一个函数,要记得加上\0,否则程序很多会出错误!!值得注意的是,C编译器以及32位机和64位机的差异在Labview调用时也有体现,所以造成实际的调用十分麻烦,要很好的理解C的基础知识!下篇介绍令大家郁闷的指针的调用!
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档