你的位置:首页 > ASP.net教程

[ASP.net教程]LabView调用C#混合模式dll


在一些特定要求下,我们的C#可能需要制作dll给LabView进行调用,并且我们不能够保证C#的程序是完全自己写而不调用第三方的dll库。很多时候我们需要使用诸如Sqlite.Net、AForge.Net之类的开源库,此时我们发现我们需要使用混合模式去兼容这些由.NET 2.0版本运行时开发的开源库。

一、C#中的混合模式

如果是C#应用程序,那么我们只要在工程对应项目中添加“应用程序配置文件”也就是app.config文件:

image

然后在里面填入如下信息进行编译即可:

<?"1.0" encoding="utf-8" ?><configuration>  <startup useLegacyV2RuntimeActivationPolicy="true">  <supportedRuntime version="v4.0" /> </startup></configuration>

然后我们会在编译后的可执行文件中看到对应的配置文件,其名称与最终生成的可执行文件类似:

image

右键打开会发现其内容就是app.config里的内容。

二、LabView中配置混合模式

我们需要在LabView中利用C#进行开发的dll,并且里面有第三方的库是.Net2.0 3.0以及3.5之类程序集,那么我们也需要要求配置混个模式。但是LabView中没有app.config,于是我们每次调用报错。解决方式就是模仿C#的程序,在LabView生成的exe可执行文件相同目录创建一个exe.config文件,然后填入配置信息。

具体操作如下:

1. 创建LabView工程

2. 在编写完程序后生成可执行文件:<应用程序名称>.exe

3. 在根目录下使用文本编辑器创建:<应用程序名称>.exe.config文件,然后复制内容:

<?"1.0" encoding="utf-8" ?><configuration>  <startup useLegacyV2RuntimeActivationPolicy="true">  <supportedRuntime version="v4.0" /> </startup></configuration>

4. 将LabView调用的程序集都放在根目录(此操作防止一些程序集找不到其引用的其它程序集)

5. 运行LabView生成的可执行文件

原文见NI官网:Loading .NET 2.0, 3.0, and 3.5 Assemblies in LabVIEW

PS:当然,这个方式也存在问题,就是没法直接进行调试。

希望对大家有帮助!也希望有更好方法的同行能够指点一下!