2012-10-07 166 views
1

我所有的商業經驗都基於.NET(VB和C#)等高級語言。我有C和C++(大學)的學術經驗。Visual C++編譯

我不完全理解Visual C++如何適應.NET方式。我有使用Cygwin爲Linux編譯C++程序的經驗(在大學)。

我正確地指出Visual C++會編譯成像C#和VB.NET這樣的中介語言嗎?我假設開發人員只使用Visual C++,而C++開發人員則希望針對多個環境使用Cygwin?

我問的原因是因爲我使用C++組件(由其他開發人員編寫)作爲.NET應用程序的一部分。

我今天在線閱讀了很多Visual C++文章,但是我還沒有找到我正在尋找的答案。

回答

3

編號C++直接編譯爲機器代碼,沒有像.NET的IL這樣的中間步驟,它帶有即時編譯器,可以在運行時將其轉換爲機器代碼。

如果您需要在C++和.NET代碼之間進行互操作,那麼您可能需要查看C++/CLI。一種僅僅是類似於 C++的語言,但它很好地彌合了本地C++和.NET運行時之間的鴻溝。

+0

感謝+1參考:C++/CLI。我假設如果代碼是用傳統的C++編寫的,那麼它將不得不在C++/CLI中重寫? – w0051977

+0

C++/CLI的意義在於你不必重寫那種類型的代碼。 C++/CLI編譯器也可以編譯本機C++代碼。 *和*您可以編寫一個託管包裝類,以將本機C++類展示爲託管代碼。 –

+0

謝謝。如果您可以使用C++/CLI編譯器編譯本地C++,那麼您將如何編寫一個包裝類?我假設它將類似於在.NET中使用COM組件(VB6),即通過暴露類型庫。 – w0051977

2

我正確地指出Visual C++會編譯成像C#和VB.NET這樣的中介語言嗎?

是,也不是。如果您使用C++/CLI(這是Visual C++中包含的Microsoft專有語言,類似於C++語言,但絕對不是同一件事),那麼是的,它會編譯爲.NET中間代碼。如果關閉C++/CLI並使用標準C++,則它將編譯爲本機代碼,而不使用.NET運行時。

Cygwin是誰想要針對多個環境的C++開發人員使用?

如果您想要定位多個環境,則不需要Cygwin。然而,用Cygwin編譯的便攜式代碼更可能在其他平臺上的GCC上進行編譯。您可以使用任何編譯器編寫可移植代碼。

Cygwin來編譯C++程序的Linux

我想你可能是在這一點上一丁點混亂。 Cygwin是一個爲Windows提供GCC編譯器(和類POSIX)環境的軟件包。 Cygwin不能在Linux上運行,沒有必要。

+0

感謝+1爲我的第三個問題的答案:「Cygwin編譯用於Linux的C++程序」。 – w0051977