【问题标题】:What in C++ can make Windows 8 apps not run on ARM?C++ 中的哪些内容可以使 Windows 8 应用程序无法在 ARM 上运行?
【发布时间】:2012-10-12 13:59:59
【问题描述】:

构建 Windows 8 应用程序,开发人员可以选择 HTML/JavaScript、XAML/.Net (C#/VB) 和 XAML/C++。我想用 XAML/C++ 编写我的应用程序。

在前两种选择中构建应用程序几乎保证您的应用程序将在 Intel 和 ARM 架构上执行。

但我听说如果我在我的 C++ 应用程序中执行某些操作,我可能会导致应用程序无法在 ARM 架构上执行。但我不知道细节。

有谁知道 C++ Windows 8 应用程序应该避免什么才能在 ARM 上运行好吗?这些是架构决定还是只是技术上的差异?

【问题讨论】:

  • cpp 是文件扩展名,你可能是指 C++。
  • AFAIK - 任何使用 Metro 编写的应用程序都可以在任何 Windows 8 平台上运行。
  • 如果您只使用现代 UI 配置文件,您应该没问题。您需要不那么广泛,我们才能真正帮助您。您的问题不清楚,询问是否是“FUD”,是一个讨论主题,有点适合 Stackoverflow。
  • 如果不为 ARM 编译,则无法在 ARM 上运行。 JS 和 .Net 不会直接编译为机器码,因此这些语言的应用程序可以在任何架构上运行。

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


【解决方案1】:

我不知道有什么会导致您的代码根本无法在 ARM 下执行或编译(内联汇编除外)。

但是,您可以做一些事情,这会使 ARM 给出错误的答案。

ARM 处理器是“弱排序的”,这篇最近的文章为您介绍了低调

http://preshing.com/20121019/this-is-why-they-call-it-a-weakly-ordered-cpu

但总而言之,ARM 处理器可能会重新排序内存访问,如果您不小心,这可能会在 x86 和 ARM 架构之间在多线程应用程序中产生不同的结果。

【讨论】:

    【解决方案2】:

    ARM 仅支持 Windows 应用商店应用。

    系统要求

    支持的架构:适用于 Windows 8 的 Windows SDK 支持 为以下架构构建应用程序:x86 x64 ARM (Windows 应用商店应用程序)注意:Windows 8 的 Windows SDK 不能 直接安装在ARM架构上。您可以安装 x86 或 x64 平台上的 Windows SDK,用于构建应用程序 以 ARM 架构为目标。

    Here is a link to the article that you can refer to.

    【讨论】:

      【解决方案3】:

      为了在每个架构上运行,显然您首先需要为每个架构进行编译。如果您编写标准 C++(并且如果您不依赖未定义的行为和/或特定于平台的行为),那么在架构之间移植时通常会引起麻烦的事情是:

      (此列表为示例)

      • int、long、long long(和其他)的大小可能因平台而异
      • char 的签名
      • 如何填充结构
      • 浮动的二进制布局
      • 字节序
      • 等等。

      如果你避免疯狂的指针算术和强制转换,通常你是安全的。

      【讨论】:

        【解决方案4】:

        MFC 应用程序无法在基于 ARM 的 Windows 8 系统上运行。

        您可以使用 C++ 构建 Metro 风格的应用程序,您只需遵循 Metro“风格”指南。

        如果您希望您的所有程序都支持基于 ARM 的 Windows 8 系统以及基于 x86 的系统,请更改您的程序以使用 HTML/CSS 或 XAML 和 WinRT API,而不是 MFC 和 Win32 API。

        【讨论】:

          猜你喜欢
          • 2012-11-30
          • 1970-01-01
          • 2014-08-30
          • 1970-01-01
          • 2013-02-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-11
          相关资源
          最近更新 更多