999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

在CVI中如何使用C++語言

2008-12-31 00:00:00張富松
電腦知識與技術 2008年15期

摘要:介紹了在CVI中通過DLL的方式來使用C++語言的編程方法,給出了實現例子,并驗證了其有效性。實現了在CVI中使用C++語言的程序設計。

關鍵詞:C語言;C++語言;CVI

中圖分類號:TP312文獻標識碼:A文章編號:1009-3044(2008)15-20ppp-0c

How to Use C++ Language in CVI

ZHANG Fu-song

(Unit 92941 of PLA,Huludao 125001,China)

Abstract: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.

Key words:C language;C++ language;CVI

1 引言

LibWindows/CVI是美國國家儀器公司(簡稱NI公司)推出的交互式C語言開發環境,CVI將功能強大、使用靈活的C語言與用于數據采集分析和顯示的測控專業工具有機地結合起來,它的集成化開發環境、交互式編程方法、函數面版和豐富的庫函數大大增強了C語言的功能,為熟悉C語言的開發人員建立檢測系統、自動測試系統、數據采集、過程監控、虛擬儀器等提供了一個理想的軟件開發環境,在我國已經得到了較為廣泛的應用。

而C++語言作為C語言的超集,以其面向對象、封裝、繼承和多態的特點在軟件開發領域后來居上,它的面向對象的特點更符合人們的思維方式,其運行代碼要比C語言簡潔、易于理解,尤其是新的標準中增加了模板、通用容器、STL(Standard Template Library)算法等內容,模板的引入對C++程序設計者來說是一場革命,自此,C++程序設計煥然一新。

兩種語言各有特點,各有所長,C++語言兼容C語言,對于一個習慣于面向對象設計的程序員來說,CVI是面向過程的語言,用大量的回調函數來處理消息,無疑是一種痛苦,想用別的語言來代替,又有困難,CVI中有很多專有的函數和儀器面版控件,別的軟件不能提供替代的產品,那么,能不能即使用CVI來開發軟件,又能使用C++的新增功能哪?能,就是通過動態鏈接庫來實現。

2 使用動態鏈接庫(DLL)將C++特性過程化

DLL是一種基于Windows的程序模塊,不僅包含函數,還可以包括數據和各種資源,庫中的函數可以被應用程序或其它的DLL調用。使用DLL有如下的優點:

1)如果不同的程序使用相同的DLL,只需在內存中將DLL裝載一次,節省了內存。

2)可以使用DLL的不同版本來代替當前的DLL。只要DLL中子例程有相同的參數,則可以使用新版本的DLL運行程序,而不用重新編譯它。

3)如果有一個非常大且需要不斷更新或改正錯誤的應用程序,則可以將它劃分為多個執行部分與DLL。這樣允許我們只對需要改變部分進行操作,而不用對整個大執行文件進行改動。

4)支持多國語言。開發者可將依賴于語言的函數和資源分離出來,建立DLL的不同版本來保存不同語言的字符串,然后在運行時改變語言;或可以設計圖標與位圖,而后在不同的應用程序中使用它們,這是實現軟件商品國際化的一項技術。

5)DLL獨立于編程語言。這意味著在VC++環境中開發的DLL可以在C++ Builder、VB、CVI等環境下使用。

可以看出,DLL是由函數組成的。而在面向對象的程序設計中,程序是由不同的對象組成的,程序運行過程就是調用對象的方法;所以,如果我們需要使用C++的新特性,就需要把調用對象的方法改為調用函數,這樣,就把調用接口轉換成C語言格式了,就可以使用C++的新特性了。

3 實現方法

下面以在DLL中實現C++中的浮點型堆棧stack為例。在C++中使用浮點型堆棧非常簡單,只要定義一個stack 類型變量,就可以使用此變量的各種方法了,而在CVI中則必須自己編寫兩個子程序來實現壓棧、出棧的方法。在本例子中,只給出2個函數,分別實現了壓棧和出棧的功能。

1)在VC++環境下新建DLL工程,進入VC++,選擇New,選擇Projects,選擇Win32 Dynamic-Link Library,給出工程名程(本例是DLL),選擇一個路徑來保存文件,選擇OK按鈕,進入下一個頁面,選擇A Simple DLL Project,選擇Finish按鈕,進入下一個頁面,選擇OK按鈕,則生成有關的框架文件,在左面的小窗口中選擇File View菜單,選擇Source Files,選擇DLL.cpp,雙擊該文件,如下所示,生成一個框架文件:

#include \"stdafx.h\"

BOOL APIENTRYDllMain( HANDLE hModule,DWORDul_reason_for_call,LPVOID lpReserved )

{

return TRUE;

}

2)在#include \"stdafx.h\"語句下面添加如下代碼:

#include

#include

stack> stackfloat;//(兩個向右的箭頭之間要有空格,否則出錯)

extern \"C\" __declspec(dllexport) voidpush_float(float x)

{

stackfloat.push(x);

}

extern \"C\" __declspec(dllexport) float pop_float()

{

float temp = stackfloat.top();

stackfloat.pop();

returntemp;

}

3)選擇菜單Build,選擇Build DLL,則系統完成編譯工作。在工作目錄的Debug目錄下生成生成了DLL.dll和DLL.lib和其它文件,這兩個文件在下面的工作中將會被使用。

4)退出VC++,運行CVI,新建一個C文件,內容如下:

#include

#include

#include

extern__declspec(dllimport) voidpush_float(float x) ;

extern__declspec(dllimport) float pop_float(void);

int main (int argc, char *argv[])

{ int i; float temp; char cc[40];

if (InitCVIRTE (0, argv, 0) == 0) return -1;

for(i = 0 ; i < 10 ; i++) push_float(i+0.5);

for(i = 0 ; i < 10 ; i++) {

temp=pop_float() ;

sprintf(cc,\"The pop num is %5.1f\",temp);

MessagePopup (\"Using a DLL\", cc);

}

CloseCVIRTE ();

return 0;

}

5)將VC++生成的DLL.dll和DLL.lib復制到當前的工作目錄下,選擇工程窗口,單擊右鍵,選擇Add File,在新彈出的窗口中選擇DLL.lib,選擇OK,選擇運行程序,則程序會依次顯示出棧的數字,程序驗證完畢。

6)以上程序中,CVI在安裝時要選擇與微軟公司的C++編譯器兼容模式。

4 可以使用的C++特性

C++還提供了很多提高程序員工作效率的機制和庫工具,比如模板(template),包括模板函數和模板類,能讓程序員“批量”生產代碼。通用算法,包括填充和生成、計數、操作序列、查找和替換、比較范圍、刪除元素、對已排序的序列進行排序和運算、數值算法。通用容器,包括向量、鏈表、雙端隊列。集合、堆棧、單端隊列和映像等工具。

5 結束語

通過這種變通的方式,程序員就可以在CVI中使用C++語言中的先進的編程方式和各種便利,節省了時間與精力,可謂一舉兩得,有興趣的C++編程人員可以一試。本方法已在某型裝備的測試程序中獲得應用。

參考文獻:

[1]Bruce Eckel,Chuck Allison.C++編程思想第2卷 實用編程技術[M].機械工業出版社,2006.

[2]Herbert Schildt.C語言大全[M].郭興社,戴建鵬,譯.電子工業出版社,1990.

[3]張毅剛,喬立巖.虛擬儀器軟件開發環境Lab Windows/CVI6.0 編程指南[M].機械工業出版社,2002.

收稿日期:2008-03-07

作者簡介:張富松(1967-),男,工程碩士,主要從事導彈測試研究。

主站蜘蛛池模板: 免费人成又黄又爽的视频网站| 67194在线午夜亚洲| 手机在线免费不卡一区二| 美女毛片在线| 97成人在线视频| 国产杨幂丝袜av在线播放| 中文字幕永久在线看| 大陆精大陆国产国语精品1024| 亚洲成人黄色网址| 成人国产三级在线播放| 欧美一区中文字幕| 熟妇人妻无乱码中文字幕真矢织江 | 国产一区成人| 亚洲日本韩在线观看| 久青草免费视频| 欧美专区日韩专区| 中文字幕久久波多野结衣 | 久久伊人久久亚洲综合| 欧美区日韩区| 国产真实乱了在线播放| 综合久久久久久久综合网| 久久综合激情网| 国产成人区在线观看视频| 2021国产乱人伦在线播放| 国产精品hd在线播放| 亚洲日本中文字幕乱码中文| 波多野结衣久久精品| 成人av专区精品无码国产 | 国产美女一级毛片| 青草精品视频| 日韩国产无码一区| 一区二区无码在线视频| 国产香蕉一区二区在线网站| 欧美高清国产| 国产精品视频a| 蜜桃视频一区二区| 国产免费观看av大片的网站| 久久精品亚洲中文字幕乱码| 特级aaaaaaaaa毛片免费视频| 久久女人网| 国产无遮挡猛进猛出免费软件| 99re在线观看视频| 尤物精品国产福利网站| 人妻丰满熟妇αv无码| 亚洲国产成人精品无码区性色| 亚洲欧美天堂网| 国产人免费人成免费视频| 亚洲欧美另类日本| 国产成人永久免费视频| 婷婷五月在线| 亚洲人成网7777777国产| 麻豆精品在线视频| 波多野结衣在线se| 九九九久久国产精品| 色偷偷综合网| 丁香六月综合网| 亚洲全网成人资源在线观看| 午夜爽爽视频| 中文无码日韩精品| 国产一区免费在线观看| 日本尹人综合香蕉在线观看| 亚洲免费福利视频| 国内精品一区二区在线观看| 欧美a在线看| 天堂岛国av无码免费无禁网站| 四虎影视8848永久精品| 亚洲成肉网| 草草线在成年免费视频2| 2022国产无码在线| 91无码人妻精品一区二区蜜桃| 综合色88| 亚洲男人在线| 精品撒尿视频一区二区三区| 国产精品极品美女自在线网站| 久久久久国产精品熟女影院| 国产拍揄自揄精品视频网站| 一区二区无码在线视频| 幺女国产一级毛片| 亚洲日本精品一区二区| 中字无码精油按摩中出视频| 欧美成人亚洲综合精品欧美激情 | 国产偷倩视频|