C/C++培训
达内IT学院
400-996-5531
所有基于CLR (Common language Runtime,公共语言运行时)的语言都可以被编译为IL语言(Intermediate language,一种伪汇编语言),所以支持CLR的语言都可以以一种简单的、与原生语言风格相同的方式互相调用,这些语言之间的互相调用本质上就是IL语言的互相调用。基于CLR的语言示例如下(C++比较特殊,本身不基于CLR,但是可以支持CLR模式):
VB.NET是将VB移植到.NET平台后的语言。VB.NET在调用C#组件时只需要按照VB本身的语法规则,其他的使用方式和在C#中完全一致,同时VB.NET和C#公用相同的界面开发框架Winform,这两种语言的Winform开发组件完全通用。
C++不是完全基于.NET的语言,但是可以支持CLR模式。在C++中使用C#组件需要使用gcnew方式创建对象,生成的对象以句柄方式管理(对象本身存在于CLR的内存中)。
VB.NET调用锐视组件
VB.NET使用锐视平台组件的方式和使用VB.NET原生类库的方式完全一致。
创建工程:打开VS,左上角菜单栏:文件->新建->工程->其他语言->Visual Basic。VB.NET的工程选项如下图所示,可以选择Winform应用、控制台应用、类库。如果开发界面应用则选择第一个。点击确定。
编辑窗体:创建工程完成后默认会创建一个窗体,在ToolBox中选择待添加控件到From中。SeeSharpTools中的GUI组件也可以在该应用中使用,添加方式和C#中完全一致。
编写事件响应:编写方式和C#中完全一致:添加默认事件可以通过双击控件;也可以在属性页的事件标签中添加。
添加引用:和C#中完全一致,图例如下。
编写业务代码:完全按照VB.NET的语法使用,和C#语法的不同主要有以下几个:
使用命名控件:Import JYUSB61902
关键字不同:声明方法为
类属性和变量声明方式不同:Private Property AITask As JYUSB61902AITask;Dim sampleRate As Double
没有大括号,流程控制范围通过结束关键字标明:例如If对应End If;For对应Next;Try对应End Try;Class对应End Class
C#库中入参用ref和out修饰的入参在VB.NET下调用时无需额外使用关键字修饰。
一个完整的AITask有限点采集的代码如下:
C++调用锐视组件
C++使用锐视软件时需要在工程中配置使能CLR。C++中不支持使用Winform框架的界面开发,所以锐视平台中的GUI组件不能使用。除了锐视平台中GUI以外的组件都可以直接使用,使用方法和使用C++原生类的方式基本一致。
创建工程:打开VS,左上角菜单栏:文件->新建->工程->其他语言->Visual C++。C++的工程选项如下图所示,常用的有控制台应用和MFC应用(界面应用)。选择后,点击确定。
配置工程属性:在工程上右键->属性->配置属性->常规->公共语言运行时支持,选择“公共语言运行时支持”。
添加依赖和导入命名空间:
在代码头文件包含下使用#using “dll完整路径和名称”语句添加dll依赖;使用using namespace amespacename方式导入命名空间,示例如下
编写业务代码:代码的编写方式遵循C++的语法规则,和普通的C++对象有以下不同。
对象需要使用gcnew方法创建,创建后的对象类型为句柄,使用”^”修饰,例如JYUSB61902AITask ^aiTask = gcnew JYUSB61902AITask(0);
数组的创建需要使用gcnew的方式创建,不能使用C++的数组类型。例如:array<double> ^buf = gcnew array<double>(bufSize) {};
在C#中用out和ref字段修饰的入参可以直接声明变量使用,这些变量在执行后的值会被反写。
编译运行:在编译运行时需要将所有依赖的C#的dll拷贝到最后生成的exe执行目录下,该目录可以在工程属性->配置属性->调试->命令行里查看。
注:如果没有拷贝依赖的dll到执行目录,运行时会抛出如下错误信息:
填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved