日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

【转】C++/CLI简介(什么是C++/CLI) -------C++/CLI 编程系列一

發(fā)布時間:2023/12/10 c/c++ 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】C++/CLI简介(什么是C++/CLI) -------C++/CLI 编程系列一 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

要知道C++/CLI是什么,首先知道什么是CLI。

一、CLI簡介

CLI:(Common Language Infrastructure,通用語言框架)提供了一套可執(zhí)行代碼和它所運行需要的虛擬執(zhí)行環(huán)境的規(guī)范。更通俗的我們可以說它是一個虛擬平臺,是操作系統(tǒng)和應(yīng)用程序間的一層抽象。微軟的.NET的基礎(chǔ)CLR(Common Language Runtime,通用語言運行時)就是CLI的一個實例。

?

CLI主要的組成部分有:CTS,Metadata,CLS和VES。

★????????? CTS(Common Type System,通用類型系統(tǒng)):是CLI的基礎(chǔ),它是一個類型規(guī)范,定義了所有CLI平臺上可以定義的類型的集合,所有基于CLI的語言類型都是CTS的一個子集,目前C++/CLI是對CTS描述支持最好的高級語言。

★????????? Metadata(元數(shù)據(jù)):用來描述和引用CTS定義的類型,元數(shù)據(jù)以一種獨立于任何語言的形式存儲,正是元數(shù)據(jù)賦予了組建自描述的能力。

★????????? CLS(Common Language Specification,通用語言規(guī)范):是用以確保所有CLI語言能夠互操作的一組規(guī)則,它定義了所有CLI語言都必須支持的一個最小功能集(一個CTS的子集)。各CLI語言可以選擇自己對CTS的一部分的映射,但是為了確保不同語言的交互,至少應(yīng)該支持CLS所定義的最小功能集。

★????????? VES(Virtual Execution System,虛擬執(zhí)行系統(tǒng)):為CLI程序提供了一個在各種可能的平臺上加載和執(zhí)行托管代碼的虛擬機環(huán)境,只是一個規(guī)范,比如微軟和momo就各有自己的實現(xiàn)。.NET的CLR的JIT和GC應(yīng)該屬于此范圍。

.NET Framework是微軟對CLI的一個實現(xiàn),當然也是目前最好的實現(xiàn),.NET Framework主要包含CLR和BCL,CLR(實時通用語言)是核心也即CLI的實現(xiàn),BCL是一套通用的代碼庫,可以被所有的.NET語言(C#, VB.NET, C++/CLI)程序所使用。Visual C++2005是C++/CLI的實現(xiàn)。

二、什么是C++/CLI


其實C++/CLI除了包含ISOC++和CLI擴展,它之所以強大的更重要的原因就是它實現(xiàn)了ISOC++和.NET的無縫連接。C++/CLI支持對本地ISOC++編程和.NET托管編程的無縫集成,不是簡單的混合,不僅能夠像.NET調(diào)用windows API一樣通過P/Invoke來實現(xiàn)函數(shù)互調(diào),而且可以實現(xiàn)類型class級和ISOC++和.NET類庫的相互使用,更強的是能夠?qū)崿F(xiàn)類型的混合。為了實現(xiàn)無縫連接,絕大多數(shù)的以前的ISO C++代碼編譯后將得到托管代碼,部分不能編譯為托管IL的采用P/Invoke調(diào)用實現(xiàn)。代碼托管,但是數(shù)據(jù)并不托管,原來ISOC++中本地堆內(nèi)的數(shù)據(jù)仍位于本地堆中。

C++/CLI(CLI:Common Language Infrastructure)是一門用來代替C++托管擴展(下文使用MC++指代)新的語言規(guī)范。重新簡化了C++托管擴展的語法,提供了更好的代碼可讀性。和微軟.NET的其他語言一樣,微軟向ECMA提交了C++/CLI的標準。C++/CLI現(xiàn)在可以在Visual C++ 2005上開發(fā)。C++/CLI的部分特性已經(jīng)申請了專利。

三、C++/CLI給我們提供了什么?

①????? 優(yōu)雅流暢的語法和文法--C++/CLI為C++開發(fā)人員書寫托管代碼提供了一種非常自然的感覺,并且它提供了非托管代碼到托管代碼的平滑過度。以前所謂的"雙重底線"問題現(xiàn)在已經(jīng)蕩然無存。

②????? 一流的CLI支持--CLI特色,例如屬性、碎片集合和屬類得到了直接支持,此外,C++/CLI還準許將這些特色用于本地非托管的類。

③????? 一流的C++類支持--C++特色,例如模板和析構(gòu)函數(shù)對于拖管和非拖管類繼續(xù)有效。實際上,C++/CLI是你可以"表面上"在棧或C++本地堆上聲明一個.NET類型唯一的.NET語言。

④????? 在.NET與C++之間的溝壑上架起了一座橋梁--C++開發(fā)人員在抨擊BCL時不再象離開水的魚。

⑤????? C++/CLI編譯器產(chǎn)生的可執(zhí)行文件完全是可校驗的。

四、使用C++/CLI我們可以做什么

可以簡單的從它所包含的三部分內(nèi)容來解釋:

①????? ISOC++是C++/CLI對CLI擴展的基礎(chǔ),C++/CLI對以前的ISOC++部分完全進行了保留,完全兼容,所以ISOC++可以做的,現(xiàn)在C++/CLI仍然可以繼續(xù),那有人說這個就是ISOC++,那么我也告訴你是C++/CLI, 因為它是被編譯為IL代碼,這時我們可以用來開發(fā)游戲和圖形處理軟件等,但是如果是要開發(fā)系統(tǒng)或底層,這時需要將代碼編譯為本地代碼,其實這時的C++/CLI就是ISOC++了;

②????? 對CLI的.NET實現(xiàn)的擴展,這部分我們可以充分地使用.NET所帶來的優(yōu)勢,比如龐大的類庫和高效的UI快速開發(fā)能力;

③????? ISOC++和.NET的集成,通過這部分,更好地補充了以前的本地代碼和.NET代碼的交互的能力,降低的集成的難度,使得可以更加充分地利用各語言和開發(fā)人員的優(yōu)勢。

五、學(xué)習(xí)C++/CLI所需要的基礎(chǔ)

??? C++/CLI包含了ISOC++和對其的.NET的擴展,看這兩部分,一個是ISOC++,另一個是在.NET的擴展,可見基礎(chǔ)就是ISOC++,這也正是我這里指出的本系列所要求的基礎(chǔ)。

前面雖然提到C++/CLI包含ISOC++和其擴展,但是考慮到ISOC++是個很大的內(nèi)容和已經(jīng)存在有大量的書籍介紹,所以本系列著重介紹ISOC++對.NET的擴展部分。


C++/CLI:是靜態(tài)C++對象模型到CLI的動態(tài)組件對象編程模型的捆綁,或者說C++/CLI是ISOC++在.NET的擴展,是ISOC++和.NET的無縫結(jié)合。簡而言之,它就是你如何用C++在.NET中編程,而不是C#或Visual Basic.NET。


本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/Eric_Jo/archive/2009/05/14/4184916.aspx

總結(jié)

以上是生活随笔為你收集整理的【转】C++/CLI简介(什么是C++/CLI) -------C++/CLI 编程系列一的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。