您可以使用 C++/CX 编写普通的 Windows 应用程序吗?
Can you write normal Windows applications with C++/CX?
或者您是否仅限于 "Metro-style" 应用程序和 Windows 商店应用程序?
起初,我认为 C++/CX 是 C++/CLI 的一个很好的替代品,因为它有一些漂亮的 C#-esque 关键字('sealed'、'partial')并且它还可以编译为本机代码,而不是使用 .NET。但是在线阅读时,我只能找到有关 Windows 商店应用程序和 Metro 风格应用程序的信息...
此外,WinRT 是否仅适用于 Windows 8 及更高版本?
是的,您可以使用 C++/Cx 编写桌面应用程序,并可以使用一些 Windows 运行时 API(那些在文档中标记的和 headers 可用于桌面应用程序)桌面应用程序。请参阅 MSDN 上的 Windows Runtime APIs for desktop apps. The Enumerate app packages sample 演示使用 C++/Cx 在桌面应用程序中调用 Windows 运行时 API。
Windows 运行时 Xaml 类 不适用于桌面应用程序,但由于您可以 mix-and-match C++ 和 C++/Cx,因此您可以调用典型的桌面 UI API(Win32、MFC、DirectX 等)来自也使用 C++/Cx 的应用程序。
C++/Cx 并不是 C++/CLI 的真正替代品。除了使用一些相似的语法外,它们还有完全不同的目标。正如您所注意到的,C++/Cx 不是一种托管语言,因此它不能用于调用托管代码。选择 C++/CLI 的主要原因是为了与托管代码进行互操作。如果您需要从桌面应用程序调用 Windows 运行时,C++/Cx 是一个不错的选择。
Windows 运行时仅在 Windows 8 及更高版本上可用。
维基百科页面上 C++/CX 的第一行是
C++/CX (component extensions) is a language extension for C++ compilers from Microsoft that enables C++ programmers to write programs for the new Windows Runtime platform, or WinRT. (emphasis added)
所以看起来 C++/CX 之于 WinRT 就像 C++/CLI 之于.Net/CLR。即 C++/CX 用于使用 WinRT 编写 windows 应用程序。 WinRT 适用于 windows 8 个商店和地铁应用程序。
您可以在 C++ 中编写常规 windows API 应用程序,因此您可以在 C++/CX 中执行相同的操作。但这可能并不容易或不可能,但由于扩展是特定于 WinRT 的,您为什么要这么做。 C++/CLI 编译为 CLR 字节码,是 运行 与通用语言 运行 时间。让 C++/CX 生成不依赖于 WinRT 的可执行文件是问题的关键。
这个SO post表示是的WinRT仅适用于Windows 8。(大概Windows 10也是如此。)
或者您是否仅限于 "Metro-style" 应用程序和 Windows 商店应用程序?
起初,我认为 C++/CX 是 C++/CLI 的一个很好的替代品,因为它有一些漂亮的 C#-esque 关键字('sealed'、'partial')并且它还可以编译为本机代码,而不是使用 .NET。但是在线阅读时,我只能找到有关 Windows 商店应用程序和 Metro 风格应用程序的信息...
此外,WinRT 是否仅适用于 Windows 8 及更高版本?
是的,您可以使用 C++/Cx 编写桌面应用程序,并可以使用一些 Windows 运行时 API(那些在文档中标记的和 headers 可用于桌面应用程序)桌面应用程序。请参阅 MSDN 上的 Windows Runtime APIs for desktop apps. The Enumerate app packages sample 演示使用 C++/Cx 在桌面应用程序中调用 Windows 运行时 API。
Windows 运行时 Xaml 类 不适用于桌面应用程序,但由于您可以 mix-and-match C++ 和 C++/Cx,因此您可以调用典型的桌面 UI API(Win32、MFC、DirectX 等)来自也使用 C++/Cx 的应用程序。
C++/Cx 并不是 C++/CLI 的真正替代品。除了使用一些相似的语法外,它们还有完全不同的目标。正如您所注意到的,C++/Cx 不是一种托管语言,因此它不能用于调用托管代码。选择 C++/CLI 的主要原因是为了与托管代码进行互操作。如果您需要从桌面应用程序调用 Windows 运行时,C++/Cx 是一个不错的选择。
Windows 运行时仅在 Windows 8 及更高版本上可用。
维基百科页面上 C++/CX 的第一行是
C++/CX (component extensions) is a language extension for C++ compilers from Microsoft that enables C++ programmers to write programs for the new Windows Runtime platform, or WinRT. (emphasis added)
所以看起来 C++/CX 之于 WinRT 就像 C++/CLI 之于.Net/CLR。即 C++/CX 用于使用 WinRT 编写 windows 应用程序。 WinRT 适用于 windows 8 个商店和地铁应用程序。
您可以在 C++ 中编写常规 windows API 应用程序,因此您可以在 C++/CX 中执行相同的操作。但这可能并不容易或不可能,但由于扩展是特定于 WinRT 的,您为什么要这么做。 C++/CLI 编译为 CLR 字节码,是 运行 与通用语言 运行 时间。让 C++/CX 生成不依赖于 WinRT 的可执行文件是问题的关键。
这个SO post表示是的WinRT仅适用于Windows 8。(大概Windows 10也是如此。)