【LabVIEW】构造器节点(调用C#动态链接库dll)
一、调用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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!