【问题标题】:Windows 8 dev possible with native c++?Windows 8 开发可以使用原生 C++ 吗?
【发布时间】:2012-06-24 17:51:59
【问题描述】:

你可以只使用 c++ 为 windows 8 制作 Metro 应用程序吗? 我的意思是,没有所有那些 windows 编译器特定的扩展,比如 gc 等等。我已经尝试为 windows 8 dev 搜索一些代码,并且 c++ 的每个代码示例都使用了所有那些相当无用的 windows c++ 扩展。

【问题讨论】:

  • “相当无用的 windows c++ 扩展”我很好奇;他们究竟“相当无​​用”的是什么?考虑到它们隐藏的 COM 设置代码的数量,它们对于它们的预期目的非常有用。
  • C++/CX 不是 C++/CLI 并且没有 gc。

标签: c++ c++11 windows-8 microsoft-metro


【解决方案1】:

您的问题本质上是关于您是否必须使用 C++/CX 扩展来编写 Metro 应用程序。

不,你没有;所有语言扩展都有语言内的类似物。您可以将 C++/CX 扩展视为 Qt 的预处理器设置魔法。所有 C++/CX 扩展都有等效的纯 C++ 类似物。你可以明确地写出来。

你只是真的想要。 Metro API 基于 COM 对象等。因此,您必须明确处理 COM 接口、编组等。

无论哪种方式,您都在编写只能在 Windows 上运行的代码。因此,您不妨让自己轻松一点,并在必要时使用语言扩展。

【讨论】:

  • 谢谢,这个答案确实对与 Metro 应用程序相关的一些事情有所帮助!
  • 如果只是隐藏COM,那为什么不使用ATL呢?
  • 即使使用 ATL,代码仍然看起来很乏味。当然你也可以使用它,有一个库叫做 Windows Runtime C++ Template Library msdn.microsoft.com/en-us/library/hh438466%28v=vs.110%29
  • +1 在上面 - 使用低级 C++ 语言投影的 Windows 运行时编程真的很难看。
【解决方案2】:

WinRT 应用需要 Windows 特定的扩展,因为它们在沙盒环境中运行。见http://msdn.microsoft.com/en-us/library/windows/apps/hh974580.aspx。您可以将 WinRT API 与 C++、C# 和 JavaScript 一起使用。

它需要 Visual Studios(最新)。

【讨论】:

  • 那么为什么所有这些示例都使用 c++ windows 特定的扩展?例如部分引用类 MainPage : public Windows::UI::Xaml::Controls::Page
  • 它是一个特殊的Windows API和环境;因此它需要特定的 Windows 代码。
  • 也就是说windows 8 dev不能使用plain ISO c++,但是需要使用那些无用的语言特性?
  • 如果您想为 Windows 应用商店制作 Metro 应用程序,您必须使用所有应用程序所需的沙盒环境和其他 API 功能。您仍然可以制作普通的 c++ 应用程序,但不能制作 Metro 应用程序。
最近更新 更多