可以使用visual studio 2012构建ARM桌面程序吗?

可以使用visual studio 2012构建ARM桌面程序吗?,arm,visual-studio-2012,Arm,Visual Studio 2012,我使用的是visual studio 2012 beta版,我的桌面(win32)程序在ARM体系结构中编译得很好 升级到visual studio 2012 RC后,编译器将无法工作,并出现以下错误: “不支持为ARM平台编译桌面应用程序” 我在这个论坛上找到了一个帖子 微软真的停止了ARM上的win32开发,这对吗? 在VS2012测试版中编译只是一个侥幸?当然是的。我用VS2012 RC练习。 现在,我将解释如何避免“为ARM平台编译桌面应用程序不受支持”,并构建win32应用程序 第一

我使用的是visual studio 2012 beta版,我的桌面(win32)程序在ARM体系结构中编译得很好

升级到visual studio 2012 RC后,编译器将无法工作,并出现以下错误:

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

我在这个论坛上找到了一个帖子

微软真的停止了ARM上的win32开发,这对吗?
在VS2012测试版中编译只是一个侥幸?当然是的。我用VS2012 RC练习。 现在,我将解释如何避免“为ARM平台编译桌面应用程序不受支持”,并构建win32应用程序

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

第二种方法:从Visual Studio工具开始菜单运行“VS2012 ARM交叉工具命令提示符”,然后执行cl[cl params]myfile1.cpp myfile2.cpp myres.res/链接[链接参数]

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

您可以编辑该文件:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Platforms\ARM\Microsoft.Cpp.ARM.Common.props
部分添加以下行:

<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>
true


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

我能够绕过这个错误,通过在C:\Program Files(x86)\Microsoft Visual Studio 11.0\VC\bin\x86\u ARM的cl的ARM版本中添加“/D\u ARM\u WINAPI\u PARTITION\u desktop\u SDK\u AVAILABLE”命令行参数,为ARM编译一个小小的“hello world”cpp文件。我发现#在crtdefs.h文件中根据sn0w对这个问题的回答进行定义,而无需修改该文件。现在,我不能保证任何更复杂的东西会真正起作用,或者微软没有为Windows RT桌面应用程序建立某种白名单或数字签名验证,因此,即使它可能会编译,但当Windows RT最终可用时,它可能不被允许运行


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

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

我刚刚测试了这个,不幸的是事实就是如此

您将收到以下消息:
Windows无法验证此文件的数字签名


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

是的,你正确阅读了connect的帖子。Windows RT(适用于ARM的Windows 8)不支持第三方桌面应用程序。因此,不支持在visual studio中开发它们。如果您是MSDN订户或有权访问Windows Phone/Mobile代码,您应该看看cl.EXE。现在,一些人已经解决了如何在Windows RT上运行非Microsoft签名的代码,mamaich的解决方案非常有用。不幸的是,如果您尝试重新编译程序,您可能会发现ARM缺少一些重要的LIB。no2chem发布了一篇解释如何将DLL文件转换为LIB文件的文章(你需要从windowsrt设备获得DLL)。如果我想在C#和XAML应用程序中使用该DLL,它仍然是一个“桌面应用程序”吗?这里有一些细节,在底部,可能的解决方法。。。请检查此文件是否在其他程序中打开。如何修改?@mamaich-我不是想说得粗鲁,但微软批准了吗?(我正在寻找一种微软认可的方法来避免错误,因为这是一个真实的项目,而不是像XDA那样的黑客(对XDA的人来说没有冒犯))。啊,这很有趣。。。这个技巧只能修复IDE。如果进入命令行,仍然会出现错误。事后看来,这是有道理的。@jww对于一个专业项目,为什么不使用受支持的ARM交叉编译器,如GCC等?对于VS2017,我修改了以下文件,它工作得很好:C:\Program Files(x86)\Microsoft Visual Studio \2017\Professional\Common7\IDE\VC\VCTargets\Platform\ARM64\PlatformToolsets\v141\Toolset.targets只是一个挑剔的问题:在Visual Studio下使用mamaich的技巧编译时,VS应用
/D\u ARM\u WINAPI\u PARTITION\u DESKTOP\u SDK\u AVAILABLE=1