Можно ли создавать настольные программы ARM с помощью Visual Studio 2012?

Я работал с бета-версией Visual Studio 2012, и моя программа для настольных компьютеров (win32) была отлично скомпилирована в архитектуре ARM.

После обновления до Visual Studio 2012 RC компилятор не работал и выдает следующую ошибку:

«Компиляция настольных приложений для платформы ARM не поддерживается»

Я нашел сообщение на форуме об этом http://connect.microsoft.com/VisualStudio/feedback/details/745580/arm-configuration-doesnt-work

Верно ли, что Microsoft действительно прекращает разработку Win32 на ARM? И что компиляция в бета-версии VS2012 была просто счастливой случайностью?


person Viesturs    schedule 22.06.2012    source источник
comment
Да, вы правильно прочитали эту публикацию. Windows RT (windows 8 для ARM) не поддерживает настольные приложения сторонних производителей. Таким образом, их разработка в Visual Studio не поддерживается.   -  person Jon    schedule 28.06.2012
comment
Если вы являетесь подписчиком MSDN или имеете доступ к коду Windows Phone / Mobile, вам следует взглянуть на cl.exe.   -  person sgupta    schedule 28.09.2012
comment
Теперь, когда некоторые умные люди выяснили, как использовать сторонние продукты -подписанный код в Windows RT, решение mamaich весьма полезно. К сожалению, если вы попытаетесь перекомпилировать свою программу, вполне вероятно, что вы обнаружите, что некоторые важные LIB отсутствуют для ARM. no2chem опубликовал ветку на XDA Developers, в которой объясняется, как преобразовать файлы DLL в LIB-файлы (вам понадобятся библиотеки DLL с устройства Windows RT).   -  person Quppa    schedule 01.02.2013
comment
У меня была DLL, которая это делала. Если бы я хотел использовать эту DLL в приложении на C # и XAML, оставалось ли это настольным приложением?   -  person jocull    schedule 09.09.2013


Ответы (4)


Вы можете редактировать файл:

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

В разделе <PropertyGroup> добавьте строку:

<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>

до </PropertyGroup>

И это все, вы можете создавать настольные приложения ARM с помощью VS2012.

person mamaich    schedule 10.09.2012
comment
Пожалуйста, проверьте, открыт ли этот файл в другой программе. Как это изменить? - person onmyway133; 21.06.2013
comment
@mamaich - я не хочу показаться грубым, но одобрила ли это Microsoft? (Я ищу одобренный Microsoft метод, чтобы избежать ошибки, поскольку это настоящий проект, а не взлом XDA (без обид на людей XDA)). - person jww; 07.08.2013
comment
Ах, это интересно ... трюк исправляет только IDE. Если вы зайдете в командную строку, вы все равно получите ошибку. Оглядываясь назад, это имеет смысл. - person jww; 07.08.2013
comment
@jww для профессионального проекта, почему бы не использовать поддерживаемый кросс-компилятор ARM, например GCC и т. д.? - person BrainSlugs83; 09.07.2014
comment
@ onmyway133 У меня была такая же проблема, я решил ее, открыв файл от имени администратора. - person Olivier; 15.06.2015
comment
Просто с VS 2012? Или я могу использовать VS 2015 Community ?? Спасибо! - person Jesuslg123; 19.10.2015
comment
В случае VS2017 я изменил следующий файл, и он работал нормально: C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ VC \ VCTargets \ Platforms \ ARM64 \ PlatformToolsets \ v141 \ Toolset. цели - person miradham; 13.12.2017

Мне удалось обойти эту ошибку и скомпилировать небольшой cpp-файл "hello world" для ARM, добавив аргумент командной строки "/ D _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE" в версию cl для ARM в C: \ Program Files (x86) \ Microsoft Visual Студия 11.0 \ VC \ bin \ x86_arm. Я обнаружил, что #define из ответа sn0w на этот вопрос в файле crtdefs.h, без необходимости изменять этот файл. Теперь я не могу гарантировать, что что-то более сложное действительно будет работать, или что Microsoft не ввела какой-либо вид белого списка или проверки цифровой подписи для настольных приложений Windows RT, поэтому, даже если оно может компилироваться, его может не разрешить запуск когда наконец станет доступна Windows RT.

Обратите внимание, что перед запуском ARM-версии cl.exe из командной строки необходимо установить переменные среды с помощью этого командного файла: «C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ VC \ bin \ x86_arm \ vcvarsx86_arm.bat "

person Paul    schedule 13.09.2012
comment
Просто придирка: при использовании трюка mamaich для компиляции в Visual Studio VS применяет /D _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1. - person jww; 07.08.2013

Даже если вы скомпилируете приложение, вы не сможете запустить его в Windows 8 RT, поскольку неподписанные приложения не запустятся.

Я только что это проверил, и, к сожалению, это так.

Вы получаете следующее сообщение:
Windows cannot verify the digital signature of this file

Я полагаю, что для этого, вероятно, есть обходной путь, но он никогда не будет официально поддерживаться.

person Adam Niles-Crane Walker    schedule 18.10.2012
comment
Здесь, внизу, есть некоторые подробности о возможном обходном пути для этого ... forum.xda-developers.com/ - person dodgy_coder; 14.11.2012

Ну конечно; естественно. Я тренировался с VS2012 RC. Теперь я объясню, как избежать «Компиляция настольных приложений для платформы ARM не поддерживается» и создать приложение win32.

1-й способ: исправить инструменты сборки - цель состоит в том, чтобы исправить (или попытаться заменить его бета-версией) библиотека MSBuild: Microsoft.Build.CPPTasks.Common.v110.dll

2-й способ: запустите «VS2012 ARM Cross Tools Command Prompt» из меню «Пуск» Visual Studio Tools, затем выполните cl [cl params] myfile1.cpp myfile2.cpp myres.res ... / link [linkparams]

в обоих случаях вам также необходимо закомментировать директиву #error в crtdefs.h в строке 332. (Microsoft Visual Studio 11.0 \ VC \ include)

person sn0w    schedule 29.07.2012