我在做一个控制下位机的小程序,有现成的API,是c#写的dll。但是我用c#写完功能后发现总是运行到某一个地方报错(下位机死机或者是pc跟下位机通讯断了),而同样的流程我用labview写就不会有问题。
我甚至做了一个这样的实验,把我要实现的功能用c#再写成一个dll,实现只要调用这个dll的一个public方法就可以完成整个流程。然后用c#和labview分别调用,发现结果还是一样。我觉得可能是 labview和C#执行的过程中的差异导致的,但是到底有什么差异我就不明白了,请教各位,谢谢。
labview调用c#动态库,需要特定的写法。内容有点多,不好打字,你直接百度搜索如何用labview调用c#dll。问题直接解决,谢谢采纳。
我们需要在LabView中利用C#进行开发的dll,并且里面有第三方的库是.Net2.0 3.0以及3.5之类程序集,那么我们也需要要求配置混个模式。但是LabView中没有app.config,于是我们每次调用报错。解决方式就是模仿C#的程序,在LabView生成的exe可执行文件相同目录创建一个exe.config文件,然后填入配置信息。
具体操作如下:
创建LabView工程
在编写完程序后生成可执行文件:<应用程序名称>.exe
在根目录下使用文本编辑器创建:<应用程序名称>.exe.config文件,然后复制内容:
<?xml version ="1.0" encoding="utf-8" ?>
4. 将LabView调用的程序集都放在根目录(此操作防止一些程序集找不到其引用的其它程序集)
原文见NI官网:Loading .NET 2.0, 3.0, and 3.5 Assemblies in LabVIEW
PS:当然,这个方式也存在问题,就是没法直接进行调试