31

我正在使用visual studio 2012 beta,我的桌面(win32)程序在ARM架构中编译得很好。

升级到 Visual Studio 2012 RC 后,编译器将无法工作并喷出以下错误:

“不支持为 ARM 平台编译桌面应用程序”

我在这个http://connect.microsoft.com/VisualStudio/feedback/details/745580/arm-configuration-doesnt-work上找到了一个论坛帖子

微软真的切断了 ARM 上的 win32 开发,这对吗?而在 VS2012 beta 中编译只是侥幸?

4

4 回答 4

47

您可以编辑该文件:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Platforms\ARM\Microsoft.Cpp.ARM.Common.props

在该<PropertyGroup>部分中添加以下行:

<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>

</PropertyGroup>

仅此而已,您可以使用 VS2012 构建 ARM 桌面应用程序。

于 2012-09-10T07:27:18.080 回答
10

通过将“/D _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE”命令行参数添加到 C:\Program Files (x86)\Microsoft Visual工作室 11.0\VC\bin\x86_arm。我发现#define from sn0w's answer on this question in crtdefs.h 文件,无需修改该文件。现在,我不能保证任何更复杂的东西会真正起作用,或者微软没有为 Windows RT 桌面应用程序建立某种白名单或数字签名验证,所以即使它可以编译,也可能不允许运行当 Windows RT 终于可用时。

请注意,在您可以从命令行运行 cl.exe 的 ARM 版本之前,您必须使用此批处理文件设置环境变量:“C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\x86_arm\ vcvarsx86_arm.bat"

于 2012-09-13T19:02:12.733 回答
4

即使您编译该应用程序,也无法在 Windows 8 RT 上运行它,因为未签名的应用程序将无法启动。

我刚刚对此进行了测试,不幸的是,情况确实如此。

您会收到以下消息:
Windows cannot verify the digital signature of this file

我想可能有一个解决方法,但它永远不会得到官方支持。

于 2012-10-18T11:54:27.597 回答
3

是的当然。我用 VS2012 RC 练习过。现在我将解释如何避免“不支持为 ARM 平台编译桌面应用程序”并构建 win32 应用程序。

第一种方法:修复构建工具 - 目标是修补(或尝试用 beta 版本替换)MSBuild 的库:Microsoft.Build.CPPTasks.Common.v110.dll

第二种方式:从 Visual Studio Tools 开始菜单运行“VS2012 ARM Cross Tools 命令提示符”,然后执行 cl [cl params] myfile1.cpp myfile2.cpp myres.res ... /link [linkparams]

对于这两种情况,您还需要在第 332 行的 crtdefs.h 中注释 #error 指令。(Microsoft Visual Studio 11.0\VC\include)

于 2012-07-29T11:07:54.037 回答