labview调用DLL


LabVIEW如何方便地调用DLL文件_c/c++_weixin_33991418的博客-CSDN博客


    
                
                        

        



        


最新文章

  • 熟悉并了解uml的使用(一)
  • 关于“企业文化”的联想
  • LeetCode 53. Maximum Subarray 最大连续字段和问题
  • 15种独特能力让你在社会中鹤立鸡群
  • 美国绿卡申请条件

归档

2019
7月 6篇
6月 72篇
5月 48篇
4月 56篇
3月 59篇
2月 63篇
1月 99篇
2018
12月 59篇
11月 57篇
10月 39篇
9月 56篇
8月 66篇
7月 61篇
6月 41篇
5月 62篇
4月 49篇
3月 74篇
2月 38篇
1月 61篇
2017
12月 73篇
11月 244篇
10月 63篇
9月 70篇
8月 84篇
7月 93篇
6月 65篇
5月 65篇
4月 58篇
3月 54篇
2月 39篇
1月 38篇
2016
12月 41篇
11月 43篇
10月 32篇
9月 43篇
8月 55篇
7月 38篇
6月 44篇
5月 56篇
4月 49篇
3月 68篇
2月 24篇
1月 33篇
2015
12月 41篇
11月 39篇
10月 38篇
9月 35篇
8月 38篇
7月 43篇
6月 33篇
5月 30篇
4月 38篇
3月 40篇
2月 17篇
1月 27篇
2014
12月 14篇
11月 37篇
10月 32篇
9月 17篇
8月 25篇
7月 33篇
6月 30篇
5月 37篇
4月 31篇
3月 31篇
2月 15篇
1月 21篇
2013
12月 21篇
11月 22篇
10月 15篇
9月 17篇
8月 27篇
7月 28篇
6月 26篇
5月 33篇
4月 24篇
3月 28篇
2月 17篇
1月 30篇
2012
12月 28篇
11月 28篇
10月 23篇
9月 24篇
8月 23篇
7月 24篇
6月 20篇
5月 29篇
4月 10篇
3月 33篇
2月 19篇
1月 10篇
2011
12月 17篇
11月 18篇
10月 20篇
9月 11篇
8月 16篇
7月 20篇
6月 17篇
5月 19篇
4月 18篇
3月 24篇
2月 13篇
1月 9篇
2010
12月 13篇
11月 17篇
10月 9篇
9月 13篇
8月 19篇
7月 13篇
6月 5篇
5月 13篇
4月 15篇
3月 19篇
2月 4篇
1月 14篇
2009
12月 9篇
11月 14篇
10月 11篇
9月 13篇
8月 10篇
7月 13篇
6月 9篇
5月 9篇
4月 10篇
3月 8篇
2月 5篇
1月 8篇
2008
12月 5篇
11月 8篇
10月 13篇
9月 7篇
8月 11篇
7月 7篇
6月 7篇
5月 16篇
4月 14篇
3月 7篇
2月 4篇
1月 7篇
2007
12月 10篇
11月 9篇
10月 8篇
9月 6篇
8月 1篇
7月 6篇
6月 7篇
5月 6篇
4月 5篇
3月 5篇
2月 4篇
1月 5篇
2006
12月 3篇
11月 8篇
10月 10篇
9月 4篇
8月 2篇
7月 6篇
6月 2篇
4月 4篇
3月 1篇
2月 1篇
1月 2篇
2005
12月 1篇
11月 4篇
10月 4篇
9月 1篇
7月 5篇
6月 1篇
3月 3篇
2月 2篇
1月 3篇
2004
12月 2篇
10月 3篇
9月 1篇

LabVIEW如何方便地调用DLL文件

转自:http://bbs.elecfans.com/jishu_469502_1_1.html
LabVIEW调用DLL文件
  LabVIEW支持通过调用DLL文件的方式与其它编程语言混合使用。比如,在实际的工程项目中,用户可以用C++语言实现软件的运算部分,并把这些功能构建在DLL文件中,然后再使用 LabVIEW编写程序的界面部分,并通过调用编写好的DLL来调用运算部分的功能。
  LabVIEW 中是通过Call Library Function Node(CLN)节点来完成DLL文件调用的。创建一个新的VI,右击程序框图,在Functions Palette中依次选中Connectivity——Libraries&Executables工具栏即可找到该节点(图1)。
labview调用DLL_第1张图片

1.jpg (24.15 KB, 下载次数: 2)

下载附件 保存到相册

2015-2-12 11:22 上传

图1 Call Library Function Node
  将节点放置在程序框图中,双击会出现它的配置对话框,共有四页。第一页用于填写被调用函数的信息(图2)。Library name or path需给出DLL文件名和路径,操作系统路径下的DLL文件,直接输入文件名也可调用,否则必须输入全路径。在这里已经给出名字的DLL是被静态加载到程序中的,也就是说当调用了这个DLL的VI被装入内存时,DLL同时被装入内存。LabVIEW也可动态加载DLL,只要勾选上Specify path on diagram的选项即可。选择了这个选项,在 Library name or path中输入的内容就无效了,取而代之的是CLN 节点多出一对输入输出,用于指明所需要使用的DLL的路径。这样,当VI被打开时,DLL不会被装入内存,只用程序运行到需要使用这个DLL中的函数时,才把其装入内存。Function name是需要调用的函数的名称,LabVIEW会把DLL中所有的暴露出来的函数都列出,用户只要在下拉框中选取即可。Thread栏用于设定哪个线程里运行被调用的函数。用户可以通过 CLN 节点的配置面板来指定被调用函数运行所在的线程。CLN 的线程选项非常简单,只有两项: Run in UI thread和Run in any thread。LabVIEW的程序框图上直接可以看出一个 CLN节点是选用 的什么线程。如果Run in UI thread,节点颜色是橙色的;Run in any thread则是浅黄色的(图3)。
labview调用DLL_第2张图片

2.jpg (17.07 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:22 上传

图2 填写被调用函数信息
labview调用DLL_第3张图片

3.jpg (6.68 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:23 上传

图3 CLN不同线程对比
  通常情况下,除非使用的动态链接库是多线程安全的,CLN 中选择Run in any thread方式;否则必须选择Run in UI thread方式。判断一个动态链接库是不是多线程安全的,需通过以下方法:如果一个动态链接库的文档中没有明确说明它是多线程安全的,那么就要当作是非多线程安全的;在可以看到动态链接库源代码的条件下,如果代码中存在全局变量、静态变量或者代码中看不到有lock一类的操作,那么这个动态链接库也就肯定不是多线程安全的。
  选择了Run in any thread方式,LabVIEW会在最方便的线程内运行动态链接库函数,且一般会与调用它的VI在同一个线程内运行。因为LabVIEW是自动多线程的语言,它也很可能会把动态链接库函数分配给一个单独的线程运行。如果程序中存在没有直接或间接先后关系的两个CLN节点,LabVIEW很可能会同时在不同的线程内运行它们所调用的函数,也许是同一函数。对于非多线程安全的动态链接库,这是很危险的操作。很容易引起数据混乱,甚至是程序崩溃。
  选择Run in UI thread方式,因为LabVIEW只有一个界面线程,所以如果所有的CLN设置都是界面线程,那么就可以保证这些CLN调用的函数肯定全部都运行在同一线程下,肯定不会被同时调用。对于非多线程安全的动态链接库,这种方式就保证了它的安全。
  让我们回到配置对话框第一页,Calling convention用于指明被调用函数的调用约定。这里只支持两种约定:stdcall和C call。它们之间的区别在于,stdcall由被调用者负责清理堆栈,C call由调用者清理堆栈。这个设置错误时,可能会引起LabVIEW崩溃,也就是说如果LabVIEW调用DLL函数时出现异常,首先应该考虑这个设置是否正确。(Windows API一般使用的都是stdcall;标准C的库函数大多使用C call。如果函数声明中有类似__stdcall这样的关键字,它就是stdcall的。)第二页是函数参数的配置(图4)。
labview调用DLL_第4张图片

4.jpg (13.76 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:23 上传

图4 配置函数的参数
  DLL和LabVIEW之间传递参数,最常用的三种数据类型是数值、数值型数组和字符串。C语言中经常把指针或者数据的地址在函数间传递,在32位操作系统中,可以使用int32数值来表示指针。因此,当需要在LabVIEW中传递指针数据时,可以使用I32或U32数值类型来表示这个地址类型的数据。但是,64位的程序中,数据的地址只能使用I64或U64来表示。这样,如果一个调用了DLL函数的VI,并且函数参数中有地址型数据,使用固定数据类型的数值来表示地址,就要准备两份代码。解决方法是使用LabVIEW中的新的数据类型Pointer-sized Integer。这个数据类型的长度在不同的平台上会自动使用32位或64位长度。如果在C语言函数参数声明中有const关键字,可以选中Constant选项。布尔类型在DLL函数和LabVIEW VI之间传递没有专有的数据类型,是利用数值类型来传递的。输入时先把布尔值转变为数值,在传递给DLL函数;输出时再把数值转为布尔值。对于数组的传递,LabVIEW只支持C数据类型中的数值型数组,传递数组类型需要注意的的是“Array Format”要选择“Array Data Pointer”。这个设置中还有其他两个选项,带有“Handle”的参数类型都是表示LabVIEW定义的特殊类型的。在第三方的DLL中不会使用到数组参数作为输出值时,要记得为输出的数组数开辟空间。开辟数据空间的方法有两种:第一种方法,创建一个长度满足要求的数组,作为初始值传递给参数,输出数的数据就会被放置在输入数组的所在的内存空间内。第二种方法是直接在参数配置面板上进行设置。在Minimum size中写入一个固定的数值,LabVIEW就会按此大小为输出的数组开辟空间。在 Minimum size 中选择函数的其它数值参数,而不是固定数值。这样LabVIEW会按照当时被选择的参数值的大小来开辟空间。字符串与使用与数组是非常类似的,实际上在C语言中字符串就是一个I8数组。
在NI软件的安装路径下打开当前使用版本的LabVIEW文件夹,通过 examples\dll\data passing\Call NativeCode.llb找到简单数据类型在LabVIEW与C之间的对应关系。部分常见关系见表1。
labview调用DLL_第5张图片

5.jpg (39.05 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:23 上传

labview调用DLL_第6张图片

6.jpg (19.95 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:23 上传

labview调用DLL_第7张图片

7.jpg (33.51 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:23 上传

labview调用DLL_第8张图片

8.jpg (45.04 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:23 上传

表1 数据类型对比
  第三页用于为DLL设置一些回调函数,可以使用这些回调函数在特定的情形下完成初始化、清理资源等工作(图5)。
labview调用DLL_第9张图片

9.jpg (15.24 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:24 上传

图5 设置回调函数
  如果为Reserve选择了一个回调函数,那么当一个新的线程开始调用这个DLL时,这个回调函数首先被调用。可以利用这个函数为新线程使用到的数据做初始化工作。线程在使用完这个DLL之后,它会去调用Unreserve中指定的回调函数。Abort中指定的函数用于VI非正常结束时被调用,也就是让一个程序在运行完前停止。这些回调函数的原型在Prototype for these procedures中列出,必须要由DLL的开发者按照特定的格式实现。如果使用的DLL不是专为LabVIEW设计的,一般不会包含这样的回调函数。
  第四页是错误处理方式,用户可根据需要选择相应的错误检查级别。
  另外还需要注意的是,C语言中的struct在LabVIEW中可以使用cluster来表示,但有时需要作出相应的调整。这是因为在C语言中,struct的字节对齐是可以进行设置的,这就决定了其各元素的存放地址的可变性。C语言中的对字节对齐数可通过#pragma pack指令或在工程属性中进行指定。而在LabVIEW的cluster中,所有元素只能是1字节对齐的,所以如果要和C语言中非1字节对齐的struct对应,需要做出一些调整。比如,对于C语言中2字节对齐的struct,第一个元素如果是I8型的,在LabVIEW的cluster中第一个元素对应不变,但不能紧挨着放第二个元素,必须留一个无意义的空位。C语言的struct其实也是如此,只不过没有表现出来。所以为了方便,如果自己用C语言生成DLL文件供LabVIEW调用最好将struct都设为1字节对齐。C语言的struct中可以嵌套数组,但是这和LabVIEW中含有数组元素的cluster是不一样的,LabVIEW中需要将数组中的元素都拆开放入cluster中。
  如果C语言的struct中含有一个指针,LabVIEW中的cluster只能用一个U32数值(32位系统上,64位系统上使用U64)来表示指针的地址,而不能将指针所指向的内容放到Cluster中去。如果声明的是指向struct的指针,才能在LabVIEW中使用cluster与之对应。CLN节点的配置面板中,没有一个专门命名的“struct”或者“cluster”参数类型,应选择“Adapt to Type”就可以了。如果参数的类型就是结构而非指针,考虑到C函数参数的压栈顺序,把一个结构体作为参数传给函数,相当于把结构中每个元素分别作为参数传递给函数。图6为C语言中struct和LabVIEW中cluster的部分匹配图。
labview调用DLL_第10张图片

10.jpg (20.07 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:24 上传

图6 struct和cluster匹配
LabVIEW打包DLL文件
我们接下来学习如何使用LabVIEW来打包一个DLL文件。
  首先我们编写一个名为Scale.vi的程序,功能很简单就是对输入的数据乘上10,然后再输出(图7)。
labview调用DLL_第11张图片

11.jpg (18.08 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:24 上传

图7 scale.vi
  必须在任务管理器中才能生成.dll文件。所以我们首先建立一个project,过程如下:
点击File>>New Project:
labview调用DLL_第12张图片

12.jpg (20.14 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:24 上传

图8 生成新项目
  接着弹出是否将该VI添加到新项目的对话框:
labview调用DLL_第13张图片

13.jpg (13.71 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:24 上传

图9 是否添加VI到新建项目
  选择Add,生成新的项目管理器,将其保存在需要的路径下:
labview调用DLL_第14张图片

14.jpg (16.51 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:24 上传

图10 项目管理器
  右键单击项目浏览器窗口中的Build Specifications,在快捷菜单中选择New>>Shared Library(DLL),弹出对DLL文件进行设置的对话框。点击Category>>Information,根据自己需求修改Build specification name和Target filename:
labview调用DLL_第15张图片

15.jpg (16.02 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:25 上传

图11 Information页面
  点击Source Files>>Project Files>> Scale.vi>> ,弹出对话框,直接用默认值,点击OK:
labview调用DLL_第16张图片

16.jpg (18.16 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:25 上传

图12 Define VI Prototype
  点击Destination>> Scale.dll,点击 ,可选择需要保存的路径。然后再点击Support Directory,这是指明了DLL支持文件的路径(比如数据文件之类的放在哪个文件夹),选择默认即可:
labview调用DLL_第17张图片

17.jpg (14.52 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:25 上传

图13 Destination页面
  Category中的Source Files可供用户对打包VI的属性和密码做一些设置;Advanced和Additional Exclusions可以做一些高级的设置,这些均按默认值即可。Version Information可让用户填写版本号、名称、版权、公司等信息:
labview调用DLL_第18张图片

18.jpg (19.1 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:25 上传

图14 Version Information
点击Run-Time Languages,可对支持语言进行选择,默认即可。点击Preview>>Generate Preview,可以预览到结果:
labview调用DLL_第19张图片

19.jpg (16.45 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:25 上传

图15 预览生成
点击Build,弹出生成状态对话框:
labview调用DLL_第20张图片

20.jpg (13.28 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:25 上传

图16 生成状态框
点击Done,生成完成,打开DLL文件保存的路径查看:
labview调用DLL_第21张图片

21.jpg (28 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:26 上传

图17 DLL文件保存路径
LabVIEW调用DLL文件
  LabVIEW可以方便地调用DLL文件,这些DLL文件可以是其他编译工具,如VC,生成的。
  LabVIEW可以直接通过CLN节点来调用DLL文件,以前面生成的Scale.dll文件为例。现有一个内部定时连续采集程序,通过调用该DLL文件,使读取的值为实际采集值的10倍(图18)。
labview调用DLL_第22张图片

22.jpg (14.89 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:26 上传

图18 连续采集程序
方法一
  在程序框图放入Call Library Function Node,双击弹出对话框。在Function页面的Library name or path中给入生成的Scale.dll文件的路径,Function name选择Scale,其他选项默认。
labview调用DLL_第23张图片

23.jpg (21.43 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:26 上传

图19 Function页面
  由于是LabVIEW生成的DLL文件,在Parameters页面不需要做改动,但是由于VI还有一路输出,所以还需要添加一个参数y,作为DLL文件的输出。
  如果是C语言等非LabVIEW生成的DLL函数,需要将retuen type的type选项和Data type选项改成函数定义的参数类型,对于函数里输入的参数也都需要自行添加。Callbacks和Error Checking则不需要改动。
labview调用DLL_第24张图片

24.jpg (25.39 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:26 上传

图20 Parameters页面
  点击“OK”,将生成的CLN的输入段连接到DAQmx Read.vi,return type输出连接到波形图表上,即可实现采集值放大10倍的功能。
labview调用DLL_第25张图片

25.jpg (15.98 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:26 上传

图21 完成后的程序
方法二
LabVIEW中还有一种方法可以调用DLL文件,在VI的选项栏,依次选择Tools——Import——Shared Library(.dll),弹出Import Shared Library对话框。
labview调用DLL_第26张图片

26.jpg (33.08 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:27 上传

图22 生成Import Shared Library对话框
  选择Create VIs for a shared library,点击Next,在Shared Library(.dll) Files中输入Scale.dll文件的路径,Head(.h) File里填写头文件的路径。
labview调用DLL_第27张图片

27.jpg (15.83 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:27 上传

图23 选择DLL文件路径和头文件路径
  点击Next,如果DLL文件中依赖其他的一些DLL文件,需要在Include Paths中填写这些文件的路径。其他选项可以根据客户需求设置,一般默认即可。这样一直点击Next到最后,选择Open the generated library,点击Finish。这样可以生成一个.lvlib格式的库文件,里面包含了Scale.vi,这是将调用该DLL文件的方法封装好的VI,只留下输入和输出接口,方便运用到LabVIEW的程序中。直接将Scale.vi拖放到刚才的连续采集中即可完成方法一的功能。
labview调用DLL_第28张图片

28.jpg (14.56 KB, 下载次数: 0)

下载附件 保存到相册

2015-2-12 11:27 上传

图24 完成的程序
VC调用LabVIEW生成的DLL文件
  刚才介绍了LabVIEW调用DLL文件的方法,使用VC调用LabVIEW生成的DLL文件也很简单。还是以之前生成Scale 的DLL文件为例,不同的是采集电压程序使用的是C语言的例程,但和LavVIEW实现的功能相同。
  首先将先前生成Scale DLL文件时,路径下所有的文件全部复制粘帖到C语言例程的文件夹下。打开连续采集程序,点击状态栏的Project——Settings,在Project Settings对话框中加载入Scale.lib的静态链接库。
  在程序中键入#include "Scale.h",以便引入该DLL函数。下面是C程序的代码,功能是有限点采集电压,通过Scale.dll文件实现采样值放大10倍的功能。加粗部分是因为调用DLL文件所做的改动。
  1 #include
  2 #include "NIDAQmx.h"
  3 #include "Scale.h"
  4 
  5 #define DAQmxErrChk(functionCall) if( DAQmxFailed(error=(functionCall)) ) goto Error; else
  6 
  7 
  8 
  9 int main(void)
 10 
 11 {
 12 
 13 int32 error=0;
 14 
 15 TaskHandle taskHandle=0;
 16 
 17 int32 read;
 18 
 19 float64 data[1000];
 20 
 21 char errBuff[2048]={'\0'};
 22 
 23 int i=0;
 24 
 25 double x10=0;
 26 
 27 
 28 
 29 
 30 
 31 /*********************************************/
 32 
 33 // DAQmx Configure Code
 34 
 35 /*********************************************/
 36 
 37 DAQmxErrChk (DAQmxCreateTask("",&taskHandle));
 38 
 39 DAQmxErrChk (DAQmxCreateAIVoltageChan(taskHandle,"Dev1/ai0"/*Config correct device*/,"",DAQmx_Val_Cfg_Default,-10.0,10.0,DAQmx_Val_Volts,NULL));//
 40 
 41 DAQmxErrChk (DAQmxCfgSampClkTiming(taskHandle,"",10000.0,DAQmx_Val_Rising,DAQmx_Val_FiniteSamps,1000));
 42 
 43 
 44 
 45 /*********************************************/
 46 
 47 // DAQmx Start Code
 48 
 49 /*********************************************/
 50 
 51 DAQmxErrChk (DAQmxStartTask(taskHandle));
 52 
 53 
 54 
 55 /*********************************************/
 56 
 57 // DAQmx Read Code
 58 
 59 /*********************************************/
 60 
 61 DAQmxErrChk (DAQmxReadAnalogF64(taskHandle,1000,10.0,DAQmx_Val_GroupByChannel,data,1000,&read,NULL));
 62 
 63 
 64 
 65 printf("Acquired %d points\n",read);
 66 
 67 
 68 
 69 for(i=0;i<1000;i++){
 70 
 71 Scale(data, &x10);
 72 
 73 printf("the %d Value is : %f \n",i,x10);
 74 
 75 
 76 
 77 }
 78 
 79 Error:
 80 
 81 if( DAQmxFailed(error) )
 82 
 83 DAQmxGetExtendedErrorInfo(errBuff,2048);
 84 
 85 if( taskHandle!=0 ) {
 86 
 87 /*********************************************/
 88 
 89 // DAQmx Stop Code
 90 
 91 /*********************************************/
 92 
 93 DAQmxStopTask(taskHandle);
 94 
 95 DAQmxClearTask(taskHandle);
 96 
 97 }
 98 
 99 if( DAQmxFailed(error) )
100 
101 printf("DAQmx Error: %s\n",errBuff);
102 
103 printf("End of program, press Enter key to quit\n");
104 
105 getchar();
106 
107 return 0;
108 
109 }

所以,使用LabVIEW不仅可以方便地调用各种编译软件生成的DLL文件,自己也能生成DLL文件供其他编译软件调用。这样,用户在编写大型项目时更加灵活,也为熟悉C语言的工程师提供了巨大的方便。本文只对LabVIEW和VC相互调用DLL文件做了简单的介绍,很多高级功能和技巧,用户可以在实际运用中逐渐掌握。

转载于:https://www.cnblogs.com/zhengfa-af/p/8329576.html

        
展开阅读全文
  • 点赞
  • 评论
  • 分享
    x

    海报分享

    扫一扫,分享海报

  • 收藏 2
  • 手机看

    分享到微信朋友圈

    x

    扫一扫,手机阅读

  • 文章举报
收起全文
还能输入1000个字符

行歌

08-25 2万+

LabVIEW学习笔记(九)——调用外部DLL

前言: 为了在LabVIEW中能够调用其他语言编写的程序,其提供了强大的外部程序接口能力,这些接口包括DLL、C语言接口(CIN)、ActiveX、NET.DDE、MATLAB等。通过DLL,用户能够方便地调用C、VC、VB等编程语言编写的程序。因此,本章通过示例来学习如何调用外部dll。动态链接库(DynamicLinkLibrary,DLL)是一个可以多方共享的程序模......

TEDDY的博客

05-20 1万+

LabVIEW调用DLL的整个过程及注意事项

1.LabVIEW支持的数据类型 另外,可参考…\ProgramFiles\NationalInstruments\LabVIEW2009\examples\dll\datapassing\CallNativeCode.llb\CallDLL.vi。‘此VI列举了LabVIEW与C语言中兼容的数据类型。见下表。2. 在VI里调用DL

Fezl的博客

04-28 4518

记一次LabVIEW调用DLL崩溃经验总结

记一次LabVIEW调用DLL崩溃经验总结故障现象调用完DLL,关闭应用程序时,提示程序异常结束中止总结经验:DLL中如果创建了线程、共享内存、信号量、设备文件等,关闭的时候一定要Close所有HANDLEDLL中new或malloc了堆内存,结束的时候一定要delete或free不要越界操作LabVIEW传过来的地址空间,所以LabVIEW写接口vi的时候一定要......

dxy408460910的专栏

01-12 5995

labviewdll调用

LabVIEW调用DLL文件  LabVIEW支持通过调用DLL文件的方式与其它编程语言混合使用。比如,在实际的工程项目中,用户可以用C++语言实现软件的运算部分,并把这些功能构建在DLL文件中,然后再使用 LabVIEW编写程序的界面部分,并通过调用编写好的DLL来调用运算部分的功能。  LabVIEW 中是通过Call Library Function Node(CLN)节点来完成DL...

BITgaol的博客

11-13 159

labview调用dlldll文件中的函数输出为数组)报错1097的解决方案

上图链接方式会提示报错,其中x和sum分别是输入和输出数组类型,笔者进行如下操作后报错问题解决总结一下:如果输出是数组的话,应该在输入端给输出数组分配一下内存空间...

li_little7的博客

11-05 1830

创建dll文件并利用labview实现调用

一、创建dll(dynamic link library动态链接库)1、利用c++的编译软件vs2017创建dll文件,选择动态链接库2、添加.h文件(头文件),头文件代码如下:#pragma once#ifndef mydll_H_#define mydll_H_#ifdef MYLIBDLL#define MYLIBDLL extern "C" _declspec(dllimp......

自然空间

05-21 5752

自己编写LabVIEW调用DLL

LabVIEW是图形语言,有时候需要通过文字语言来弥补一些功能,比如一些算法处理。我不太了解DLL的详细内容与规则,只是通过查询资料找到可以生成可执行DLL的方法。DLL的编写与普通控制台程序只有一小点差别,就是声明需要外部调用的函数时前面需要加上 __declspec(dllimport)。比如__declspec(dllimport) void Fir_Hamming(do...

王小壮的博客

10-22 1438

C#封装的dll文件Labview调用

操作步骤1.打开vi的后面板,右键单击选择“Connectivity”------“.NET”--------"ConstructorNode"此时会弹出窗。选择所需dll文件 选择调用dll中的方法,右键单击选择“Connectivity”------“.NET”--------"InvokeNode",如图......

guidgeek的博客

04-05 184

labview调用dll库的C语言代码,可以用来实现labview与matlab数据交互

labview调用外部dll库的C语言代码DLL文件来源不做描述Matlab可以将simulink的模型生成DLL文件可以用此方法完成labview调用matlab的数据,实现交互labview调用函数库节点的方法,如下图(在函数面板点击右键–>互连接口–>库与可执行程序–>调用库函数节点)选择DLL文件(如图所示1),选择DLL文件的函数(如图所示2)选择......

明故宫的记忆

09-30 4664

Labview调用C#动态链接库dll

一、VS2017制作dll新建->项目 选择“类库(.NETFramework)”,工程命名为|“MyLib” 确定 在Class1类里创建一个add函数,注意!!,函数前一定要加“public”修饰,否则该函数默认为私有属性,使用Labview无法找到该函数。 生成dll动态链接库,去工程所在目录中去寻找dll文件,......

有些代码不应该被忘记

06-26 6264

labview与机器视觉,labview调用opencv函数DLL

第一篇博客当中说了Labview 的优势,其中就有一项就是可以和Matlab和OpenCV混合编程,今天就说一下用Labview调用opencv,当然网上也有人分享出来怎么去做这个动态链接库,但是针对于图像处理的还不多,至少我看到的都是调用windows的动态链接库,其实也都很简单就是把一维的处理变成二维的处理,网上也有不少例程,我在这个过程当中也因为粗心大意遇到一些问题,今天就把这块详细的说一说...

qq_39948394的博客

03-27 2968

DLL动态链接库】labview调用DLL动态链接库入门实例

目的:生成一个DLL,用labview调用,实现加法乘除的功能。1、新建一个工程。2、添加头文件,头文件里面申明函数和变量。三个输入,分别是2个参数和一个代表运算法,返回值为double类型。__declspec(dllexport)表示这个是输出的类型3、添加cpp函数的内容#include "stdafx.h"#include "Dll1.h"#inclu......

最新微信小程序源码

nudtczc的博客

09-22 1639

LabVIEW中如何调用DLL

How Do I Call a Dynamic Link Library (DLL) from LabVIEW?Hardware: PXI/CompactPCI>>ControllersProblem: How do I call a DLL from LabVIEW?Solution: To ca

微信小程序源码-合集1

小小程序员的博客

11-30 1万+

labview调用VC++生成的动态链接库DLL

labview调用c dll

jianyou2008的专栏

10-15 6187

C# 调用Labviewdll

最近需要在C#中调用Labview生成的dll,无非就是非托管dll的调用,难点在于类型的转换,Labview中的类型和C#中类型的转换。 函数原型: void TestFun(char Path[],CharPro[]) 调用方法: [DllImport("TrustSystem.dll", EntryPoint = "...

weixin_42162811的博客

02-26 118

Labview调用控制C#窗体dll

labview调用并且控制C#的窗体dll,实现邮件发送。网上未见有类似的帖子。摸索了半天成功。希望分享出来帮助在坑里的人。源代码下载地址

聪聪那年的博客

01-07 1万+

labview在机器视觉中的应用——调用opencv图像处理函数

第一篇博客当中说了Labview 的优势,其中就有一项就是可以和Matlab和Opencv混合编程,今天就说一下用Labview调用Opencv,当然网上也有人分享出来怎么去做这个动态链接库,但是针对于图像处理的还不多,至少我看到的都是调用windows的动态链接库,其实也都很简单就是把一维的处理变成二维的处理,网上也有不少例程,我在这个过程当中也因为粗心大意遇到一些问题,今天就把这块详细的说一说...

Forward no stop

08-03 9389

Dev c++工具将C代码生成dll文件以及如何调用dll文件

该篇文章是对工作中一个需求的总结,工作需求是要将C语言的函数接口,生成一个DLL文件,让labview调用。然后我尝试用devc++开发工具来实现这个功能,后来因为DLL生成了,但labview调用的结果和C执行的结果不一致,因此我需要再调用下自己生成的DLL是否正确来定位出错的环节,因此就有了生成DLL以及调用DLL文件。首先说下DLL文件,DLL(Dynamic Link Lib...

Tim_Duncan_21_的博客

03-09 234

CRC校验及其C语言dll文件的生成与LabVIEW调用

CRC校验及其C语言dll文件的生成与LabVIEW调用本文将详细记录用CodeBlocks生成C语言的CRC校验的dll库文件,然后在Labview中进行调用的过程。一、CRC校验原理1)CRC寄存器初始值为 FFFF;即16个字节全为1;2)CRC-16 / MODBUS的多项式A001H (1010 0000 0000 0001B) ‘H’表示16进制数,‘B’表示二进制数计算步骤......

帅地

03-19 80万+

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。一、电子书搜索对于大部分程序员......

启舰

04-14 56万+

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。目录:你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」一、你以为的人生刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的:等真到了那一天,你会发现,你的人生很可能是这样的:......

ThinkWon的博客

02-19 16万+

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc......

龙跃十二

02-27 7万+

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

宜春

02-28 4万+

String s = new String(" a ") 到底产生几个对象?

老生常谈的一个梗,到2020了还在争论,你们一天天的,哎哎哎,我不是针对你一个,我是说在座的各位都是人才!上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时,会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。也就是说准确答案是产生了一个或两个对象,如果常量池中原来没有 ”宜春” ,就是两个。......

沉默王二

03-01 12万+

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!”来看看小王写的代码吧,看完不要骂我装逼啊。private static String createPlayer(PlayerTypes p......

ThinkWon的博客

03-01 11万+

Linux面试题(2020最新版)

文章目录Linux 概述什么是LinuxUnix和Linux有什么区别?什么是 Linux 内核?Linux的基本组件是什么?Linux 的体系结构BASH和DOS之间的基本区别是什么?Linux 开机启动过程?Linux系统缺省的运行级别?Linux 使用的进程间通信方式?Linux 有哪些系统日志文件?Linux系统安装多个桌面环境有帮助吗?什么是交换空间?什么是root帐户什么是LILO?什......

码到成功

03-03 6255

Linux命令学习神器!命令看不懂直接给你解释!

你可能感兴趣的:(labview调用DLL)