【LabVIEW】构造器节点(调用C#动态链接库dll)

您所在的位置:网站首页 labview加载dll配置 【LabVIEW】构造器节点(调用C#动态链接库dll)

【LabVIEW】构造器节点(调用C#动态链接库dll)

2023-10-31 09:52| 来源: 网络整理| 查看: 265

一、调用C#动态链接库dll https://blog.csdn.net/weixin_42314225/article/details/82910253

(1)新建VI,后面板选择“互连接口->.NET->构造器节点”。

(2)双击“构造器节点”图标,找到我们刚刚编译好的dll文件,选中相应类名,确定。

(3)选择“互连接口->.NET->调用节点”。

(4)将二者相连,点击调用节点选择相应方法。

 

二、实现遍历DataTable

https://blog.csdn.net/huanglin529/article/details/116883400

 

互连接口-->.net-->构造器节点      

 

 

 在C#中写一个函数来实现这个功能,然后再将工程生成一个动态链接库,然后在LabVIEW中就可以调用生成的dll中所写的这个函数来实现对datatable的读取。

 

三、常见问题 1、调用.net构造器“内存已满”

运行不久后提示构造器节点“内存已满”。检查是否有以下可能:(1)在构造了多个引用后没有合理的关闭引用

没有合理的关闭引用导致了使用引用的增加,随即导致了内存的增加。解决方法:在使用调用节点和属性节点时要做到每一个节点后都有一个对应的关闭引用,这样就可以避免由于没有关闭引用而使内存增加的问题。注意:如果有for循环,要在循环外关闭引用,否则也会产生错误的。

 

(2)在while框图中调用的构造器函数传入参数中有FileStream类

while框图内实时存储数据,偷懒写了个DLL函数,定义一个FileStream类的局部变量,传入数据流再写入文件。

经测试发现即使该函数不做任何操作,只要传入了FileStream都会出现“内存已满”错误。本质上应该还是没有合理的关闭FileStream类的引用导致的,但在函数内部Close()了也没用。

解决方法:使用LabVIEW的I/O操作类实现文件存储。

 

 

2、.NET构造器节点 该类不包括任何公共构造器

(1)确认已经在类和方法上加了Public关键字;(2)把构造函数删掉。

3、报错“Object reference not set to an instance of an object”

某函数调用产生这个问题。该部函数传入参数有ref,数据类型是数组,删掉这个传入参数就不报错了,但其他函数同样传入参数又不报错...个例先记录下来,原因待查。

 

4、.NET 未找到所指定的方法

用C#封装了一个dll类库,在LabVIEW项目中调用某方法的时候,出现了这个Error1316。

原因是调用的.NET方法在LabVIEW中不支持。

因为我为了方便调试,先把dll项目改为了WinForm应用程序,在类里写了Main方法,最后再把项目属性改为类库,生成dll供LabVIEW项目调用。但是忘了把Main()删掉,所以出错了。

删掉后可以正常调用。

官网回答:https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000P8iWSAS&l=zh-CN

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3