我正在使用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测试版中编译只是一个侥幸?
答案 0 :(得分: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桌面应用程序。
答案 1 :(得分:10)
通过在C:\ Program Files(x86)的cl版本中添加“/ D _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE”命令行参数,我能够解决该错误并为ARM编译一个小的“hello world”cpp文件\ Microsoft Visual Studio 11.0 \ VC \ bin \ x86_arm。我在crtdefs.h文件中找到了来自sn0w对此问题的答案的#define,而不必修改该文件。现在,我无法保证任何更复杂的实际工作,或者Microsoft没有为Windows RT桌面应用程序设置某种白名单或数字签名验证,因此即使它可以编译,也可能不允许运行当Windows RT终于可用时。
请注意,在从命令行运行ARM版本的cl.exe之前,必须使用此批处理文件设置环境变量:“C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ bin \ x86_arm \ vcvarsx86_arm.bat“
答案 2 :(得分:4)
即使您编译应用程序,也无法在Windows 8 RT上运行它,因为未签名的应用程序无法启动。
我刚试过这个,不幸的是情况就是这样。
您收到以下消息:
Windows cannot verify the digital signature of this file
我想可能有一个解决方法,但它永远不会得到官方支持。
答案 3 :(得分:3)
是的当然。我练习VS2012 RC。 现在我将解释如何避免“不支持为ARM平台编译桌面应用程序”并构建win32应用程序。
第一种方式:修复构建工具 - 目标是修补(或尝试用beta替换它)MSBuild的lib: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)