web-dev-qa-db-fra.com

Les programmes de bureau ARM peuvent-ils être créés à l'aide de Visual Studio 2012?

Je travaillais avec Visual Studio 2012 beta et mon programme de bureau (win32) compilé correctement dans l'architecture ARM.

Après la mise à niveau vers Visual Studio 2012 RC, le compilateur ne fonctionnerait pas et génère l'erreur suivante:

"Compilation d'applications de bureau pour la plate-forme ARM n'est pas prise en charge"

J'ai trouvé un message sur ce forum http://connect.Microsoft.com/VisualStudio/feedback/details/745580/arm-configuration-doesnt-work

Est-il exact que Microsoft coupe vraiment le développement de Win32 sur ARM? Et cette compilation en version VS2012 beta n'était qu'un coup de chance?

31
Viesturs

Vous pouvez éditer le fichier:

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

Dans le <PropertyGroup> section ajouter la ligne:

<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>

avant </PropertyGroup>

Et c'est tout, vous pouvez créer des applications de bureau ARM avec VS2012.

47
mamaich

J'ai pu contourner cette erreur et compiler un petit fichier cpp "hello world" pour ARM en ajoutant l'argument de ligne de commande "/ D _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE" à l'argument ARM version de cl dans C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\x86_arm. J'ai trouvé que #define de la réponse de sn0w à cette question dans le fichier crtdefs.h, sans avoir à le modifier Maintenant, je ne peux pas garantir que quelque chose de plus complexe fonctionnera réellement, ou que Microsoft n'a pas institué une sorte de liste blanche ou de vérification de signature numérique pour Windows RT apps de bureau, donc même si il peut compiler, il peut ne pas être autorisé à s'exécuter lorsque Windows RT est enfin disponible.

Notez qu'avant de pouvoir exécuter la version ARM de cl.exe à partir de la ligne de commande, vous devez définir les variables d'environnement à l'aide de ce fichier de commandes: "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\x86_arm\vcvarsx86_arm.bat "

10
Paul

Même si vous compilez l'application, vous ne pourrez pas l'exécuter sous Windows 8 RT car les applications non signées ne démarreront pas.

Je viens de tester cela, et malheureusement c'est le cas.

Vous recevez le message suivant:
Windows cannot verify the digital signature of this file

J'imagine qu'il y a probablement un moyen de contourner cela, mais il ne sera jamais officiellement pris en charge.

oui bien sûr. j'ai pratiqué avec VS2012 RC. maintenant, je vais vous expliquer comment éviter "Compiler des applications de bureau pour la ARM n'est pas prise en charge") et construire l'application win32.

1ère façon: corriger les outils de construction - l'objectif est de corriger (ou d'essayer de le remplacer par celui de la version bêta) la bibliothèque de MSBuild: Microsoft.Build.CPPTasks.Common.v110.dll

2ème manière: exécutez le "VS2012 ARM Cross Tools Command Prompt" du menu de démarrage de Visual Studio Tools, puis exécutez cl [cl params] myfile1.cpp myfile2.cpp myres.res .../link [linkparams]

pour ces deux cas, vous devez également commenter une directive #error dans crtdefs.h sur la ligne 332. (Microsoft Visual Studio 11.0\VC\include)

3
sn0w