在CVI中如何使用C++语言_第1页
在CVI中如何使用C++语言_第2页
在CVI中如何使用C++语言_第3页
在CVI中如何使用C++语言_第4页
免费预览已结束,剩余1页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、在CVI中如何使用C+语言How to Use C+ Language in CVIZHANG Fu-song(Unit 92941 of PLA,Huludao 125001,China):This article introduced a programming method of using C+ in CVI through DLL, giving an detailed example and validating itsavailability. The using C+ language programming in CVI is implemented.1 引言LibWindo

2、ws/CVI 是美国国家仪器公司(简称 NI 公司)推出 的交互式C语言开发环境,CVI将功能强大、使用灵活的 C语言 与用于数据采集分析和显示的测控专业工具有机地结合起来, 它 的集成化开发环境、 交互式编程方法、 函数面版和丰富的库函数 大大增强了 C语言的功能,为熟悉C语言的开发人员建立检测系 统、自动测试系统、数据采集、过程监控、虚拟仪器等提供了一 个理想的软件开发环境,在我国已经得到了较为广泛的应用。而C+吾言作为C语言的超集,以其面向对象、封装、继承 和多态的特点在软件开发领域后来居上, 它的面向对象的特点更 符合人们的思维方式,其运行代码要比C语言简洁、易于理解,尤其是新的标准中

3、增加了模板、通用容器、STL(StandardTemplate Library )算法等内容,模板的引入对C+程序设计者 来说是一场革命,自此,C+程序设计焕然一新。两种语言各有特点,各有所长,C+语言兼容C语言,对于一个习惯于面向对象设计的程序员来说,CVI是面向过程的语言,用大量的回调函数来处理消息, 无疑是一种痛苦, 想用别的语言 来代替,又有困难, CVI 中有很多专有的函数和仪器面版控件, 别的软件不能提供替代的产品, 那么, 能不能即使用 CVI 来开发 软件,又能使用C+啲新增功能哪?能,就是通过动态链接库来 实现。2使用动态链接库(DLL)将C+特性过程化DLL是一种基于 Wi

4、ndows的程序模块,不仅包含函数,还可 以包括数据和各种资源,库中的函数可以被应用程序或其它的 DLL调用。使用DLL有如下的优点:1)如果不同的程序使用相同的 DLL,只需在内存中将DLL装 载一次,节省了内存。2)可以使用DLL的不同版本来代替当前的 DLL。只要DLL中 子例程有相同的参数,则可以使用新版本的 DLL运行程序,而不 用重新编译它。3)如果有一个非常大且需要不断更新或改正错误的应用程序,则可以将它划分为多个执行部分与DLLo这样允许我们只对需要改变部分进行操作,而不用对整个大执行文件进行改动。4)支持多国语言。 开发者可将依赖于语言的函数和资源分离出来,建立DLL的不同版

5、本来保存不同语言的字符串,然后在运 行时改变语言; 或可以设计图标与位图, 而后在不同的应用程序 中使用它们,这是实现软件商品国际化的一项技术。5)DLL独立于编程语言。这意味着在 VC+环境中开发的DLL 可以在 C+ Builder 、VB、CVI 等环境下使用。可以看出,DLL是由函数组成的。而在面向对象的程序设计 中,程序是由不同的对象组成的, 程序运行过程就是调用对象的 方法;所以,如果我们需要使用 C+的新特性,就需要把调用对 象的方法改为调用函数,这样,就把调用接口转换成 C语言格式 了,就可以使用C+啲新特性了。3 实现方法下面以在DLL中实现C+中的浮点型堆栈stack为例。

6、在C+ 中使用浮点型堆栈非常简单,只要定义一个 stack 类型变量, 就可以使用此变量的各种方法了, 而在 CVI 中则必须自己编写两 个子程序来实现压栈、出栈的方法。在本例子中,只给出2 个函数,分别实现了压栈和出栈的功能。1)在VC+环境下新建DLL工程,进入 VC+选择New选 择 Projects ,选择 Win32 Dynamic-Link Library ,给出工程名 程(本例是DLL),选择一个路径来保存文件,选择0K按钮,进入下一个页面,选择 A Simple DLL Project ,选择 Finish 按 钮,进入下一个页面,选择 0K按钮,则生成有关的框架文件, 在左面

7、的小窗口中选择 File View 菜单,选择 Source Files , 选择 DLL.cpp ,双击该文件,如下所示,生成一个框架文件:#include stdafx.hBOOL APIENTRYDllMain( HANDLE hModule,DWORDul_reason_for_call,LPVOID lpReserved )return TRUE;2) 在#i nclude stdafx.h语句下面添加如下代码:#include#includestack stackfloat;/ (两个向右的箭头之间要有空格,否 则出错)extern C _declspec(dllexport)vo

8、idpush_float(float x)stackfloat.push(x);extern C _declspec(dllexport) float pop_float()float temp = stackfloat();stackfloat.pop();returntemp;3) 选择菜单Build,选择Build DLL,则系统完成编译工作。 在工作目录的 Debug目录下生成生成了 DLL.dll和DLL.lib 和其 它文件,这两个文件在下面的工作中将会被使用。4) 退出VC+运行CVI,新建一个C文件,内容如下:#include#include#includeextern_declspec(dllimport) voidpush_float(floatx) ;extern_declspec(dllimport) float pop

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论