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-),男,工程碩士,主要從事導彈測試研究。

主站蜘蛛池模板: 五月婷婷综合网| 亚洲欧洲日本在线| 亚洲高清无码久久久| 91午夜福利在线观看| 亚洲精品男人天堂| 无码不卡的中文字幕视频| 91一级片| 2019国产在线| 国产欧美一区二区三区视频在线观看| 婷婷色一区二区三区| 成人年鲁鲁在线观看视频| 91久久天天躁狠狠躁夜夜| 国产成人综合日韩精品无码不卡| 在线观看免费国产| 国产精品无码AV片在线观看播放| 国产欧美日韩资源在线观看| 久草性视频| 国产精品理论片| 亚洲婷婷六月| 国产v欧美v日韩v综合精品| 日韩a级毛片| 91久久国产综合精品女同我| 亚洲日产2021三区在线| 国产综合精品日本亚洲777| 成人小视频网| 日韩一级二级三级| 在线国产资源| 国产特级毛片| 亚洲中文字幕av无码区| 亚洲天堂久久久| 午夜少妇精品视频小电影| 亚洲欧美综合精品久久成人网| 国产丝袜无码一区二区视频| 亚洲综合网在线观看| 国产亚洲第一页| 熟女日韩精品2区| 午夜不卡福利| 国产区人妖精品人妖精品视频| 欧美色图久久| 国产成人欧美| 国产一区亚洲一区| h视频在线播放| 毛片久久网站小视频| 精品国产aⅴ一区二区三区| 中文字幕精品一区二区三区视频| 亚洲第一黄片大全| 日韩少妇激情一区二区| 欧美色亚洲| 亚洲人成网站在线播放2019| 欧美一级黄片一区2区| 国产爽歪歪免费视频在线观看| 国产成人久久777777| 国产第一页免费浮力影院| 国产新AV天堂| 亚洲成A人V欧美综合| www.日韩三级| 在线观看国产精美视频| 3D动漫精品啪啪一区二区下载| 亚洲国内精品自在自线官| 欧美性精品不卡在线观看| 无遮挡国产高潮视频免费观看| 亚洲国内精品自在自线官| 国产精品美女在线| 国产精品成人AⅤ在线一二三四 | 亚洲国产天堂久久综合226114| 国产免费羞羞视频| 丁香综合在线| 国产 日韩 欧美 第二页| 日韩免费中文字幕| 在线观看精品自拍视频| 亚洲乱码在线视频| 亚洲人成网站18禁动漫无码| 国产欧美精品一区二区 | 小说 亚洲 无码 精品| 亚洲精品中文字幕无乱码| 亚洲精品777| 国产中文一区a级毛片视频| 国产精品久久久久久影院| 亚洲无码电影| 波多野结衣国产精品| 波多野结衣一区二区三区88| 蜜臀av性久久久久蜜臀aⅴ麻豆|