我是靠谱客的博主 单薄老师,最近开发中收集的这篇文章主要介绍labview生成DLL以及C#对其调用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

labview生成DLL以及C#对其调用

1:制作labview dll文件
1.1 打开labview,创建一个项目,在一个新VI 上做一个2个数相加输出一个值。如下图:
在这里插入图片描述
在这里插入图片描述
1.2 在前面板中放入2个输入控件作为输入和1个输出控件作为显示,并且分别为三个控件进行接线板操作。
在这里插入图片描述
在这里插入图片描述

1.3 跳转到程序框图界面,进行连接
在这里插入图片描述
1.4 点击程序生成规范>>右键>>新建>>.Net互动操作程序集,如下图:
在这里插入图片描述
1.5 选择源程序,选中.vi文件进行导出
在这里插入图片描述
在这里插入图片描述
1.6 进行参数设置
将返回值设置为z,输入参数为x,y,然后删除z,确定>>生成,现在.dll文件已经生成好了。
在这里插入图片描述
2:使用C#调用生成的.dll文件
2.1 打开VS2015,创建新的窗体文件,在Form1窗体中创建Button和TextBox控件
在这里插入图片描述
2.2 点击引用>>添加引用,找到保存dll的位置,进行添加
在这里插入图片描述
在这里插入图片描述
2.3 双击InteropAssembly,进入查看其方法(函数模型)
在这里插入图片描述

2.4 进入Form1代码,添加命名空间:InteropAssembly
using InteropAssembly;
在button按钮的代码中输入:

 Double dd = LabVIEWExports.add(100, 100);//add为dll生成的函数
            this.textBox1.Text = dd.ToString();

结果:
在这里插入图片描述
3:补充(来自:此博客)
也可以使用下列写法调用DLL

[DllImport("xxx.dll"),DllImportAttribute]// 你的某个Dll
public static extern int 函数名(参数1,参数2...);

这里告诉编译器我们需要调用的Dll名称及其对应的方法定义

使用“extern”关键字来标识这个方法是从外部引用

DllImportAttribute是一个重要的角色,其主要作用是给CLR指示哪个Dll是需要调用的外部库,主要包含以下字段:

在这里插入图片描述
Entrypoint

入口点,用于标识函数在Dll中的位置。

你可以将入口点映射到一个不用的名称,这实际上就是将被调用的函数重命名

这里也说明以下重命名Dll函数的可能原因

  • 避免使用区分大小写的API函数名
  • 符合现行的命名标准
  • 提供采用不同数据类型的函数(通过声明同一Dll函数的多个版本)
  • 简化对包含ANSI和Unicode版本的API的使用
[DllImport("user32.dll", EntryPoint="MessageBoxA")]
public static extern int MsgBox(参数1,参数2...);//将我们自己的函数MessageBoxA映射(替换)为Dll库中的MsgBox

CallingConvention

该字段的值有以下几个:

  • CallingConvention.Cdecl : 调用方清理堆栈。它使您能够调用具有 varargs 的函数(如:printf)。
  • CallingConvention.StdCall : 被调用方清理堆栈。它是从托管代码调用非托管函数的默认约定。
  • CallingConvention: 字段的默认值为 Winapi,而后者又默认为 StdCall 约定。

最后

以上就是单薄老师为你收集整理的labview生成DLL以及C#对其调用的全部内容,希望文章能够帮你解决labview生成DLL以及C#对其调用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部