Labwindows/CVI程序调用C#生成的Dll文件
2015-12-16 20:33
1091 查看
最近需要在一个CVI程序里加入语音播报功能,由于CVI是基于C语言的编程,实现播报功能无从下手,而C#封装了库函数,可以直接调用,实现起来方便很多。下面重点记录一下CVI程序调用C#生成的Dll文件的过程。
首先,在vs中建立一个类库,编写含有语音播报功能的方法,并将其生成Dll文件。
语音播报功能编写见:http://www.cnblogs.com/leep2007/archive/2012/02/27/2370576.html。
然后,由于CVI程序无法直接调用C#生成的Dll文件,需要先将Dll文件通过CVI工具选项卡中的“Create.NET Controller”,生成一个调用.NET汇编代码的包装器(wrapper),该包装器包含对应的仪器驱动(*.fp)、源文件(*.c)和头文件(*.h)。包装器的生成具体步骤如下:
1. 选择tools菜单栏下的“Create .NET Controller”菜单;
2. 在弹出的对话框中勾选Specify Assembly by Path,选择需要调用的Dll文件,以及生成的包装器所在路径和名称,如图1所示。
3. 点击OK,即在选择路径生成包装器,同时.fp文件已添加至工程中。
图1 Create.NET Controller 对话框
接下来是调用.fp中的函数来实现语音播报功能。步骤如下:
1. 声明[Dll名称]_[类名称]类型的句柄;
2. 调用CDotNetRegisterAssemblyPath函数注册.NET的Dll,函数的第一个参数为Dll名称(字符串):其值为生成的*.C文件中指针变量__assemblyName 的值,第二个参数为.DLL文件存放的绝对路径,形式为”D:\\NI\\DLL\\sound.dll”,详细解释见函数定义。
3. 调用【Initialize_[DLL名称]】函数初始化;
4. 调用【[DLL名称]_[类名称]__create】函数,实例化类;
5. 调用【[DLL名称]_[类名称]_[函数名]】相应的函数,实现播报功能;
6. 调用CDotNetDiscardHandle函数,释放DLL实例句柄;
7. 调用CDotNetFreeMemory释放内存;
调用Close_[Dll名称]关闭DLL。
注:在生成语音dll文件时,是基于.net framework 4.5 ,所以在.net framework 4.0的平台上使用时,会报-6579错误,这时安装.net framework 4.5插件即可。
首先,在vs中建立一个类库,编写含有语音播报功能的方法,并将其生成Dll文件。
语音播报功能编写见:http://www.cnblogs.com/leep2007/archive/2012/02/27/2370576.html。
然后,由于CVI程序无法直接调用C#生成的Dll文件,需要先将Dll文件通过CVI工具选项卡中的“Create.NET Controller”,生成一个调用.NET汇编代码的包装器(wrapper),该包装器包含对应的仪器驱动(*.fp)、源文件(*.c)和头文件(*.h)。包装器的生成具体步骤如下:
1. 选择tools菜单栏下的“Create .NET Controller”菜单;
2. 在弹出的对话框中勾选Specify Assembly by Path,选择需要调用的Dll文件,以及生成的包装器所在路径和名称,如图1所示。
3. 点击OK,即在选择路径生成包装器,同时.fp文件已添加至工程中。
图1 Create.NET Controller 对话框
接下来是调用.fp中的函数来实现语音播报功能。步骤如下:
1. 声明[Dll名称]_[类名称]类型的句柄;
2. 调用CDotNetRegisterAssemblyPath函数注册.NET的Dll,函数的第一个参数为Dll名称(字符串):其值为生成的*.C文件中指针变量__assemblyName 的值,第二个参数为.DLL文件存放的绝对路径,形式为”D:\\NI\\DLL\\sound.dll”,详细解释见函数定义。
3. 调用【Initialize_[DLL名称]】函数初始化;
4. 调用【[DLL名称]_[类名称]__create】函数,实例化类;
5. 调用【[DLL名称]_[类名称]_[函数名]】相应的函数,实现播报功能;
6. 调用CDotNetDiscardHandle函数,释放DLL实例句柄;
7. 调用CDotNetFreeMemory释放内存;
调用Close_[Dll名称]关闭DLL。
注:在生成语音dll文件时,是基于.net framework 4.5 ,所以在.net framework 4.0的平台上使用时,会报-6579错误,这时安装.net framework 4.5插件即可。
相关文章推荐
- c#调用COM组件
- FREEBASIC 编译可被python调用的dll函数示例
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- DLL(Dynamic Linkable Library) 详解说明
- C#实现子窗体与父窗体通信方法实例总结
- C#通用邮件发送类分享
- C#中this的用法集锦
- C#数据结构之顺序表(SeqList)实例详解
- C#.NET获取拨号连接的宽带连接方法
- C#异步绑定数据实现方法
- C#实现AddRange为数组添加多个元素的方法
- C#中Equality和Identity浅析
- C#比较二个数组并找出相同或不同元素的方法