2012-06-22 1 views
31

Я работал с бета-версией visual studio 2012 и моей программой для рабочего стола (win32), скомпилированной в архитектуре ARM.Можно ли создавать настольные программы ARM с использованием visual studio 2012?

После обновления визуальной студии 2012 RC, компилятор не будет работать, и извергает следующее сообщение об ошибке:

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

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

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

+2

Да, вы читаете, что правильно устанавливайте проводку. Windows RT (Windows 8 для ARM) не поддерживает сторонние настольные приложения. Таким образом, нет никакой поддержки для их разработки в визуальной студии. – Jon

+0

Если вы являетесь подписчиком MSDN или имеете доступ к коду Windows Phone/Mobile, вы должны посмотреть на cl.exe – sgupta

+0

У меня была DLL, которая делала это. Если бы я хотел использовать эту DLL в приложении C# и XAML, это все-таки «настольное приложение»? – jocull

ответ

47

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

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

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

<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport> 

перед тем </PropertyGroup>

И это все, вы можете построить ARM настольных приложений с VS2012.

+0

Проверьте, открыт ли этот файл в другой программе. Как его изменить? – onmyway133

+0

@mamaich - Я не хочу звучать грубо, но Microsoft одобрила это? (Я ищу метод, одобренный Microsoft, чтобы избежать ошибки, поскольку это настоящий проект, а не XDA-подобный взлом (без обид для людей XDA)). – jww

+0

Ах, это интересно ... трюк только исправляет IDE. Если вы перейдете в командную строку, вы все равно получите ошибку. С другой стороны, это имеет смысл. – jww

3

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

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

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

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

9

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

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

+2

Только один выбор: при использовании трюка мамайха для компиляции в Visual Studio VS применяет '/ D _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE = 1'. – jww

4

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

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

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

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

+1

Здесь есть некоторые детали, в сторону основания, возможного обходного пути для этого ... http://forum.xda-developers.com/showthread.php?p=31519618&postcount=1 –

Смежные вопросы