2

我发现最接近的是:WinRT Metro 应用程序是否交叉兼容(x86/64 和 ARM)?

我还没有开发任何 Metro 应用程序,但我想了解的是,如果您正在开发 Metro 应用程序,您必须针对 WinRT(Windows 运行时)进行开发。这是构建 Metro 应用程序的唯一方法,不管你是用 JavaScript、C# 还是 C++ 来做的,都没有关系……所以它应该都可以在 ARM 上运行……是否有可能创建一个 Metro 应用程序不能在ARM上运行?

VLC 团队正试图在 Kickstarter 上筹集资金以开发适用于 Windows 8 Metro 的 VLC 播放器。

http://www.kickstarter.com/projects/1061646928/vlc-for-the-new-windows-8-user-experience-metro

用于 Windows 的 VLC 媒体播放器目前安装在全球约 100,000,000 台设备上。现有版本在 Windows 8 的桌面模式下运行,并且仅适用于基于 Intel 的 PC。这个新端口将原生集成到新的用户体验中,并且还将在后续版本中支持基于 ARM 的平板电脑

因此,如果它们原生地与用户体验集成,即使其成为 Windows 8 应用程序,为什么它一开始就不能在 ARM 芯片上运行呢?

4

3 回答 3

6

当您构建 C# Metro 应用程序时,您可以简单地选择 Any CPU 作为目标平台(通常人们会这样做)并为所有三个平台构建单个包。但是,当您开发 C++ 应用程序时,您需要分别为每个平台构建一个包。这意味着您可以为 x86 和 ARM 构建应用程序,但不能为 x64 架构构建应用程序。您可以发布这样的应用程序,并且只有 x86 和 ARM 用户才能使用它。当然,所有三个平台的支持都是好事,但是您可以在仅为 x64 和 x86 构建的项目库中使用。这将阻止您创建应用程序的 ARM 版本,直到此类库的 ARM 端口可用。我不确定 VLC 团队正在使用什么库,但这种情况的可能性肯定存在。

于 2012-12-04T15:23:22.413 回答
3

理论上,您可以(至少在 C# 和 C++ 程序中)调用“不受支持”的 Win32 API 函数。这意味着此功能很可能无法在 Windows RT 上运行。在大多数情况下,它们可以在完整的 Windows 8 上运行(尽管有些调用会导致异常)。一个例子是函数 GetVersionEx,它在完整的 Windows 下工作,但未能通过认证,很可能在 Windows RT 中不可用。

由于可以(但并不容易)在 Windows 8 上安装 Windows 应用商店应用程序跳过应用商店,因此有时使用不受支持的功能可能是有意义的。我怀疑是否可以在没有应用商店的情况下在 ARM 设备 (Windows RT) 上安装 Windows 应用商店应用程序。因为将应用程序放入应用商店需要获得无法在 ARM 设备上运行的 Windows 应用商店应用程序的认证是理论上的。假设该认证确保应用程序可以在 Windows RT 上运行,那当然是。

于 2012-12-05T13:01:04.950 回答
1

关于 VLC 项目,我假设他们有专门的解码器代码,使用汇编代码或其他需要调整的低级功能(可能是 GPU 加速)。

“普通”C++ 代码也应该在所有平台上编译,但正如@ie 所提到的那样。您必须为每个平台设置单独的配置。

于 2012-12-04T16:42:34.577 回答