Pregunta

Microsoft lanzado recientemente herramientas y documentación para su nueva plataforma Phone 7, que para consternación de aquellos que tienen un gran C ++ código base (como yo) no es compatible con el desarrollo nativo más. A pesar de que he encontrado la especulación acerca de esta decisión se invierte, lo dudo. Así que estaba pensando cómo sería viable para hacer esta base de código disponibles para Phone 7, adaptándolo para compilar en C ++ / CLI. Por supuesto, las partes de la interfaz de usuario no podían ser portado, pero no estoy seguro sobre el resto. Cualquier persona que tuvo una experiencia similar? No estoy hablando de código que hace cosas pesadas de bajo nivel - pero hay un uso bastante frecuente de las plantillas y los punteros inteligentes

.
¿Fue útil?

Solución

c ++ / CLI, teóricamente, puede ser utilizado con WPF / Silverlight usando el truco de la sustitución de la C # generada desde el XAML con una definición de macro que se puede utilizar dentro de la clase principal en un archivo de código subyacente. He trabajado esta técnica, pero no he tenido la motivación para llevarlo más allá de la teoría -. Estoy bastante contento idiomas mezcla

Por lo que el uso de C ++ / CLI en un modo seguro puro para el código de la lógica, esto puede ser que no sea posible, pero me gustaría escuchar cómo alguien va tratando ahora. Mientras investigaba para Silverlight en 2008 me encontré con este foro Silverlight comentario :

Me acabo de dar Silverlight y C ++ una oportunidad mediante la compilación de MSIL de mi proyecto de C ++ en una DLL compatible con Silverlight. La buena noticia: funciona, y se puede llamar a este código de un proyecto de Silverlight. La mala noticia: El compilador de C ++ al parecer utiliza instrucciones MSIL que Silverlight no permite

.

Por lo tanto, si se intenta esto, incluso con el más simple de los programas, obtendrá casi de inmediato la excepción "Operación podría desestabilizar el tiempo de ejecución." Para mí, esto hace que parezca menos probable que veremos Silverlight para C ++ pronto, ya que el compilador tendrá que comportarse un poco diferente.

Otros consejos

Puede generar verificable logrado código en C ++ / CLI mediante el / CLR: opción segura. El problema es que la mayor parte de su código normal de C ++ no se compilará con esa opción.

C # es actualmente el único apoyado idioma para WinPhone7.

Estoy totalmente de esperar que la EM añadirá soporte para VB y C ++ / CLI también en el futuro, pero no espere para abrir el código nativo-kimono corto plazo.

código nativo simplemente tiene demasiados problemas para superar, específicamente en torno a la seguridad, fiabilidad, etc. Gestionado código es mucho más fácil de verificar de forma estática y mucho más fácil de controlar durante la ejecución.

Si estás molesto por portar código C ++ a C #, simplemente estar contento MS no le obligará a tener que pasar a Objective-C;)

A partir de nuestra propia experiencia, el proces de portar C ++ bien escrito en C # en realidad requiere mucho menos esfuerzo de lo que cabría esperar en un principio. Claro, hay una curva de aprendizaje, pero usted tiene que con cualquier puerto. En realidad nos dieron tanto se benefician de portar nuestros motores principales de aplicaciones y datos a C # que nos re-tooled todo nuestro equipo de código en C # y C # puerto de nuestra vuelta a C ++ cuando sea necesario en lugar de al revés! Hasta ahora, sólo hemos portado dos módulos de nuevo a C ++ y llamamos nuestro código C # de nuestro código nativo a través de interoperabilidad en su lugar.

Una vez más, recuerde, WinPhone es una marca nueva plataforma utilizando lo mejor del mercado, herramientas de desarrollo de última generación altamente productivos y plataformas. No es WinMo de su padre.

Si el soporte para C ++ es algo que se encuentra a ser de vital importancia, a continuación, asegúrese de saber MS -. (Con respeto y profesionalismo) indican su posición en los foros de MSDN y en los eventos para desarrolladores de su zona:

Update1: 12/17/2012:

Mientras nativo de C ++ todavía no está soportado oficialmente para Windows Phone 7, Windows Phone 8 ahora soporta nativo de código C ++ para que pueda más fácilmente transferir su existente C ++ código base (s) a Windows Phone 8 (así como Windows 8 y Windows aplicaciones de escritorio).

Si bien no hay 100% de compatibilidad entre las plataformas Windows8 / Phone8 y API es en este momento, espero que las dos plataformas sean cada vez más integrada en el próximo par de comunicados.

Esto es especialmente cierto ahora que uno de los principales obstáculos para una cooperación más estrecha entre Windows y otros grupos en Microsoft recientemente dejó la compañía;)

Update2: 04/15/2014:

De acuerdo con los recientes anuncios en // BUILD / 2014, ahora puede empezar a construir aplicaciones "universales" en C ++ y XAML, C # / VB y XAML o JavaScript y HTML que funciona bajo Windows 8.1, Windows Phone 8.1 y Xbox ¡Uno! Para más detalles sobre la construcción de Windows Phone 8.1 Aplicaciones universal, leer este artículo .

La idea entera se basa en el desarrollo de Silverlight. Creo que se puede añadir su DLL administrado escrito en C ++ sin ningún problema a este proyecto de Silverlight, pero no podía utilizar el código nativo.

Estoy planeando instalar las herramientas en mi máquina y esta noche voy a probar esto.

Está bien si MS decide abandonar el camino y crear algo nuevo, que es la decisión EM'. Así que vamos a enfrentar los hechos. Silverlight es sin éxito todavía. MS perdió cuota significativa debido a Apple, Android y RIM. Los desarrolladores de aplicaciones, simplemente tienen que evaluar el caso de negocio para sus propias aplicaciones y decidir si confían en un aumento de la cuota de Windows 7 de teléfono o no. Para la empresa que corro, no decidimos apoyar más de MS Windows Phone 7, no a causa de esta u otra razón técnica, pero sólo porque que no creen en el retorno de la inversión para el puerto. Empezamos a apoyar Apple, Symbian, MeeGo Andoid y en el futuro si vemos un éxito en el mercado de esta nueva plataforma. Todo el apoyo de C / C ++ y nos permiten reutilizar nuestros núcleos de aplicaciones probadas. Así que por qué preocuparse en absoluto. las preferencias personales de tecnología no deben ser de apertura de puerta. Si las preferencias personales se preocupan, entonces me gustaría patear MS por su interfaz de usuario para mí feo aspecto.

Thomas

scroll top