2012-09-12 89 views
4

我聽說Windows 8的發展將使XAML/HTML5 + C++應用程序,但它是天然的非託管C++或託管C++(原C++ .NET)?Windows 8 WinRT - C++或C++ .NET?

+3

沒有「C++。NET」。請不要再爲迷惑C++衍生物的叢林(http://www.stroustrup.com/uk-objections.pdf)[迷惑混亂]添加迷霧和混亂。當前Windowses有C++/CLI,WinRT有C++/CX(Windows 8),但它們完全不同。 –

回答

7

Windows Runtime (WinRT)本身是一個本地非託管框架,但可以通過簡單的方式從託管的.NET語言中調用(與其他本機庫和臭名昭着的P/Invoke相比)。

但是,除了用它從託管語言也可以從C++/CX調用。這是一個Microsoft標準C++的擴展,類似於.NET的C++/CLI。但與後者相反,它完全是原生的非託管C++。但它支持一些C++/CLI的擴展,比如用於「託管式」指針的^運算符。但是在引擎蓋下,這些指針實際上並不是垃圾收集的指針,而是原生引用計數的指針,類似於std::shared_ptr。而且它也支持,以便與的WinRTXAML框架工作.NET樣性質和代表,我認爲,還有部分類。

除此之外,你甚至可以使用的WinRT從標準C++使用所謂Windows運行時C++模板庫(WRL),雖然它被認爲是比用C++/CX更麻煩,你可能不能夠使用所有功能,如簡單的XAML接口,不確定。

2

它是託管C++,你建成WinRT的組件。這些組件可以被HTML5或Win8 .NET應用程序引用。

0

若要添加到Slugart的良好答案,您可以爲WinRT應用程序(和Java Script)編寫非託管C++,他們也很可能會將這種非託管C++寫入Windows Phone 8的能力也擴展(目前不可能) - 這將成爲包括我自己在內的一些開發團隊的主要發佈者。