videos parte para móviles moviles movil hacer gratis desde desarrollo desarrollador desarrolla cursos curso cero aplicaciones c++ cross-platform

c++ - parte - desarrollo de aplicaciones moviles gratis



Aprendizaje y desarrollo multiplataforma(C++) (10)

¿Alguien puede dar algún consejo si existe alguna "mejor práctica" para realizar el desarrollo multiplataforma de C ++?

Hay tres cosas:

  1. Escribe tu propio código para que sea portátil.

  2. Envuelva las API específicas de la plataforma detrás de una capa de abstracción / aislamiento / utilidad

  3. Elige bibliotecas multiplataforma

Puedes elegir la opción # 2 y / o # 3.

Las ventajas de # 3 sobre # 2 tienden a ser cosas como: "Ya está escrito, depurado y admitido"; y las desventajas son: "Tengo que aprenderlo, es posible que deba pagarlo, no puedo soportarlo necesariamente por mí mismo y puede que no haga exactamente lo que quiero".

Los desarrolladores a menudo prefieren la opción # 3 en lugar del # 2, especialmente si es de código abierto gratuito (que son las tres bibliotecas que citó).

Estoy escribiendo un pequeño programa en C ++ por diversión y para ampliar mi habilidad en C ++. Dado que su alcance es relativamente pequeño, también planeo probar el desarrollo multiplataforma haciendo que este programa sea compatible con Windows y Linux.

Reconozco que mi dominio de C ++ se encuentra en algún lugar entre el nivel casual e intermedio: OO, un poco de plantillas y patrones de diseño, usé STL antes y traté de analizarlo más en detalle, ... Sin embargo, al codificar este pequeño programa, encuentro que cuanto más profundizo en C ++, más dolor siento, especialmente cuando entiendo y trato las diferencias entre la implementación de diferentes plataformas / proveedores.

El uso de frameworks multiplataforma como Qt, ACE, Boost parece ayudar a acelerar mucho el desarrollo, por lo tanto hace la vida más fácil, pero me preocupa que esto sea mejor que mi propósito. ¿Alguien puede dar algún consejo si existe alguna "mejor práctica" para realizar el desarrollo multiplataforma de C ++? Gracias.


¡Usalos, usalos a ellos! Seriamente. La única razón por la que no querrá usarlos es si planea trabajar en un entorno donde no están disponibles. Pero, dada su naturaleza multiplataforma, eso no es probable.

Encontrarás que el beneficio que obtienes al usarlos es inmenso, incluso si no fueran multiplataforma. La "mejor práctica" de la que habla es poder entregar su "producto" de la manera más rápida y sencilla posible.

Una vez respondí una pregunta de alguien que dijo que no quería usar bibliotecas GUI a un nivel superior a Xlib. Si alguna vez hubiera usado Xlib, sabría el dolor que todos habríamos sentido cuando nos viéramos obligados a codificar a un nivel tan bajo de abstracción. Esto tiene tanto sentido como querer codificar en ensamblador porque C / C ++? Python / Perl / everthting-else es simplemente una abstención de nivel superior.


A menos que esté haciendo cosas GUI multiplataforma no es un gran problema.

Hay algunos problemas pequeños relacionados con los sistemas de archivos (diferentes / / separadores, caracteres permitidos en los nombres de archivo, etc.) pero estos se encuentran en el nivel de la aplicación en lugar de en c ++.

Hacer las aplicaciones principales se vuelve más complejo, necesita manejar la ayuda, las ubicaciones de los archivos y, posiblemente, la información de seguridad y del usuario de forma multiplataforma. Para la programación de tipo de algoritmo simple no hay problema.

Qt es principalmente una biblioteca de GUI, aunque tiene elementos extra de sistemas de archivos multiplataforma. STL, Boost, ACE son multiplataforma, pero ese no es el punto principal.


Creo que puedes aprender mucho usando ACE o bibliotecas equivalentes. aumentarán su comprensión de c ++ y los patrones de diseño. Creo que esto es lo mejor que puedes hacer para mejorar tus habilidades de codificación.


Estas respuestas son realmente buenas y puedes hacer una lista para encontrar dónde está el comienzo. pero creo que debería leer algunos artículos sobre "aplicación de portabilidad" .No es relevante para el desarrollo multiplataforma, pero esto puede darle una perspectiva muy amplia sobre el desarrollo multiplataforma. En el desarrollo multiplataforma, una de las cosas más importantes son los problemas de memoria como "endian" (el orden de bytes byte orden puede mostrar diferencias para tecnologías o plataformas)



Si está realmente interesado en hacer que su código sea lo más multiplataforma posible, use la mayor cantidad de compiladores posible. Si está utilizando Windows y Linux, use VC y gcc, como mínimo. Esto asegurará que no utilice funciones específicas de conformidad y que no confíe en el comportamiento específico del sistema. Utilice más compiladores (Intel, IBM, etc.) y sistemas operativos (OS X, Solaris) si tiene acceso a ellos.


Utilice gcc. Está disponible tanto en Windows como en Linux, y las bibliotecas y la sintaxis del idioma son idénticas en ambas plataformas.

Para aplicaciones GUI multiplataforma, Qt es una buena idea. No hay que alejarse de tener una dependencia en un marco de GUI si está tratando de lograr la independencia de la plataforma.


utilizar impulso. Ellos se encargan de cosas multiplataforma para ti.

boost::filesystem es un gran ejemplo


http://blog.backblaze.com/2008/12/15/10-rules-for-how-to-write-cross-platform-code/

Debe proporcionar más detalles a las respuestas ya dadas.

También sugiero usar las bibliotecas existentes que resumen el tamaño de los tipos de datos y las diferencias. Debería considerarse lo siguiente antes de comenzar su proyecto multiplataforma.

GUI

  1. Qt
  2. XVT
  3. wxWidgets

Bibliotecas generales / marcos

  1. STL (ya incorporado en la mayoría de las bibliotecas de plataformas)
  2. Boost

Desarrollo de juegos

  1. SDL
  2. Cocos2d-x