最近我找到的是Are WinRT Metro apps cross-compatible (x86/64 and 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芯片上开始工作?
答案 0 :(得分:6)
当您构建C#Metro应用程序时,您只需选择任何CPU作为目标平台(通常人们这样做)并为所有三个平台构建单个程序包。但是当您开发C ++应用程序时,您需要分别为每个平台构建一个包。这意味着您可以为x86和ARM构建应用程序,但不能为x64体系结构构建应用程序。您可以发布此类应用程序,只有x86和ARM用户才能使用它。当然,所有三个平台的支持都是好事,但您可以在仅为x64和x86构建的项目库中使用。这将阻止您创建应用程序的ARM版本,直到此类库的ARM端口可用。我不确定VLC团队正在使用什么库,但这种情况的可能性肯定存在。
答案 1 :(得分:3)
理论上,您可以(至少在C#和C ++程序中)调用“不受支持”的Win32 API函数。这意味着此功能很可能不适用于Windows RT。在大多数情况下,它们可以在完整的Windows 8上运行(尽管有些会在调用时导致异常)。一个例子是GetVersionEx函数在完整的Windows下工作,但未通过认证,很可能在Windows RT中不可用。
由于在Windows 8上安装Windows应用商店应用程序可能(但并不容易)跳过商店,因此有时可能会使用不受支持的功能。我怀疑是否可以在没有Store的ARM设备(Windows RT)上安装Windows应用商店应用。因为将应用程序放入商店需要认证具有不能在ARM设备上运行的Windows应用商店应用是理论上的。假设认证确保应用程序可以在Windows RT上运行,当然。
答案 2 :(得分:1)
关于VLC项目,我假设他们有专门的解码器代码,使用汇编代码或其他低级功能(可能是GPU加速),需要进行调整。
“正常”C ++代码也应该在所有平台上编译,但正如@ie所提到的那样。您必须为每个平台设置单独的配置。