2012-09-12 108 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的能力也扩展(目前不可能) - 这将成为包括我自己在内的一些开发团队的主要发布者。