2012-06-22 4 views
31

Estaba trabajando con Visual Studio 2012 beta y mi programa de escritorio (win32) compilado bien en arquitectura ARM.¿Se pueden crear programas de escritorio ARM usando visual studio 2012?

Después de actualizar a Visual Studio 2012 RC, el compilador no funcionaría y arroja el siguiente error:

"compilación de aplicaciones de escritorio para la plataforma ARM no es compatible"

me encontré con un mensaje en el foro de esto http://connect.microsoft.com/VisualStudio/feedback/details/745580/arm-configuration-doesnt-work

¿Es correcto que Microsoft realmente esté cortando el desarrollo de win32 en ARM? Y esa compilación en VS2012 beta fue solo un golpe de suerte?

+2

Sí, leyó esa publicación de conexión correctamente. Windows RT (Windows 8 para ARM) no es compatible con aplicaciones de escritorio de terceros. Como tal, no hay soporte para desarrollarlos en Visual Studio. – Jon

+0

Si es un suscriptor de MSDN o tiene acceso al código de Windows Phone/Mobile, debería echarle un vistazo a cl.exe – sgupta

+0

. Tenía una DLL que estaba haciendo esto. Si quisiera usar esa DLL en una aplicación C# y XAML, ¿sigue siendo una "Aplicación de escritorio"? – jocull

Respuesta

47

Puede editar el archivo:

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

En la sección <PropertyGroup> añada la línea:

<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport> 

antes </PropertyGroup>

Y eso es todo, se puede construir aplicaciones de escritorio ARM con VS2012.

+0

Compruebe si este archivo se abre en otro programa. ¿Cómo modificarlo? – onmyway133

+0

@mamaich - No quiero sonar grosero, pero ¿Microsoft lo aprobó? (Estoy buscando un método aprobado por Microsoft para evitar el error ya que este es un proyecto real, y no un hack similar a XDA (sin ofender a la gente de XDA)). – jww

+0

Ah, esto es interesante ... el truco solo soluciona el IDE. Si caes en la línea de comando, sigues recibiendo el error. En retrospectiva, tiene sentido. – jww

3

sí, por supuesto. practiqué con VS2012 RC. ahora explicaré cómo evitar "No se admite la compilación de aplicaciones de escritorio para la plataforma ARM" y compilar la aplicación win32.

primera manera: fijar herramientas de construcción - el objetivo es parche (o tratar de sustituirlo con uno de beta) lib de MSBuild: Microsoft.Build.CPPTasks.Common.v110.dll

segunda manera: ejecuta la función " VS2012 ARM Cross Tools Command Prompt "del menú de inicio de Visual Studio Tools, luego ejecute cl [cl params] myfile1.cpp myfile2.cpp myres.res .../link [linkparams]

para ambos casos también necesita Comentar una directiva #error en crtdefs.h en la línea 332. (Microsoft Visual Studio 11.0 \ VC \ include)

9

Pude esquivar ese error y compilar un pequeño archivo cpp "hello world" para ARM agregando el argumento de línea de comandos "/ D _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE" a la versión ARM de cl en C: \ Archivos de programa (x86) \ Microsoft Visual Studio 11.0 \ VC \ bin \ x86_arm. Encontré que #defina desde la respuesta de sn0w a esta pregunta en el archivo crtdefs.h, sin tener que modificar ese archivo. Ahora, no puedo garantizar que algo más complejo realmente funcione, o que Microsoft no haya establecido algún tipo de lista blanca o verificación de firma digital para las aplicaciones de escritorio de Windows RT, así que aunque pueda compilar, puede que no se permita su ejecución cuando Windows RT finalmente está disponible.

Tenga en cuenta que antes de poder ejecutar la versión ARM de cl.exe desde la línea de comandos, debe establecer las variables de entorno utilizando este archivo por lotes: "C: \ Archivos de programa (x86) \ Microsoft Visual Studio 11.0 \ VC \ bin \ x86_arm \ vcvarsx86_arm.bat "

+2

Solo una elección: cuando se utiliza el truco de mamaich para compilar en Visual Studio, VS aplica '/ D _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE = 1'. – jww

4

Incluso si compila la aplicación, no podrá ejecutarla en Windows 8 RT ya que las aplicaciones sin firmar no se iniciarán.

Acabo de probar esto, y lamentablemente es el caso.

recibe el mensaje siguiente:
Windows cannot verify the digital signature of this file

Me imagino que es probablemente un trabajo alrededor para esto, pero nunca va a ser apoyado oficialmente.

+1

Aquí hay algunos detalles, en la parte inferior, de una posible solución para esto ... http://forum.xda-developers.com/showthread.php?p=31519618&postcount=1 –

Cuestiones relacionadas