2010-08-07 39 views
1

我來自.NET背景,將使用OpenGL/DirectX進入渲染/圖形領域。爲此,C++將成爲我選擇與這些渲染框架進行交互的語言。關於圖形/渲染的C++/CLI或純C++

據我所知,Visual C++允許CLI的本地支持,它是C++的擴展,允許應用程序受益於託管運行時。你會推薦花時間習慣C++/CLI還是應該堅持使用普通的C++?

另外,使用Visual C++ IDE時,我可以從編譯器中得到什麼?標準C++編譯代碼是否可以運行在任何可以運行C++可執行程序的任何地方的標準可執行文件?我聽說VC++的編譯器自帶問題

+0

閱讀:http://stackoverflow.com/questions/536065/c-opengl – 2010-08-07 17:06:02

+0

我對使用框架的.NET代理不感興趣。 – 2010-08-07 17:55:40

回答

2

這真的取決於你在找什麼。 C++/CLI具有很少其他.NET語言共享的優點(強烈支持混合模式作爲其中之一),但它仍然是一個.NET範例。你要深入研究的唯一原因是你想要.NET提供什麼。如果你的主要需求是全屏類型的應用程序,學習.NET擴展不太可能讓你學到一個功能更強大的C++擴展庫不會給你的東西,而C++-only選項會保留跨平臺類型的應用程序,平臺兼容性。對於編譯器來說,近年來Visual Studio的C++編譯有了顯着的改進。編譯好的可執行文件需要在目標系統上安裝正確的運行時,但這並不是特別繁瑣的要求。

+1

此外,您可以輕鬆地將'/ MT'(調試模式的'/ MTd')添加到靜態鏈接運行時並擺脫該要求。 – Thomas 2010-08-08 07:07:00

+0

@Thomas:如果您使用的C++/CLI只能使用共享庫版本的運行時,則不適用。 – 2010-08-09 13:30:59

+0

這一點只是關於本地C++。 C++/CLI不僅僅需要CRT,而是整個.NET平臺(順便也安裝了CRT平臺,但我不確定這是否可以依賴)。 – Thomas 2010-08-09 16:03:38

0
  1. C++/CLI通常是一種痛苦和imho,不值得有權訪問.NET庫。
  2. Visual C++是一個相當不錯的編譯器,將生成標準的可執行文件。但是,它確實遵循標準Windows範例,喜歡動態鏈接到庫,如果正在運行的系統上安裝了正確的庫,則可能會出現問題。對於標準的c運行時,這可能是一個問題,並且一些應用程序確保它與他們的程序一起安裝。如果你深入到構建選項,你可以配置Visual C++做任何你想要的,比如說鏈接C運行時的靜態(http://msdn.microsoft.com/en-us/library/abx4dbyh(VS.80).aspx
+0

這不是關於從C++/CLI訪問.NET的問題,而是關於使用C++/CLI構建的組件比使用p/invoke可能具有更簡潔的接口。 – 2010-08-09 13:32:07