Integre la biblioteca C ++ en la aplicación iPhone.

¿Puedo integrar mi biblioteca C ++ existente en una aplicación de iPhone?

Si bien es cierto que no puede mezclar classs de C ++ en Objective-C, puede mezclarlo con Objective-C ++, que creo que también es compatible con el iPhone. La integración del código C ++ con una aplicación de iPhone no debe ser un problema, pero si desea permanecer en el lado seguro, debe build su código como una biblioteca y luego vincularlo desde su aplicación de iPhone; de esa manera no necesita preocuparse por mezclar el código Obj-C y las classs C ++.

En cuanto a la aprobación de Apple, nadie puede darle una respuesta definitiva sobre lo que puede o no calificar su aplicación para su inclusión en la tienda, ya que Apple está bastante cerrado sobre todo el process. Sin embargo, a estas alturas ya está claro que ciertos types de aplicaciones no van a hacer el corte; a saber:

  • Aplicaciones que "abusan" o torcen el iPhone SDK de una forma que a Apple no le gusta. IE, configurando el brillo del dispositivo
  • Usar demasiado ancho de banda o resources del sistema (agotar la vida de la batería innecesariamente)
  • Duplicar la funcionalidad de Apple en alguna parte (es decir, hacer un cliente de correo, browser web, etc.)
  • Abusando de los niveles y esquemas de precios

En realidad, es mejor search en google ejemplos de aplicaciones prohibidas para tener una mejor idea de ello. Pero la conclusión es, no es cómo su aplicación hace algo, es lo que está haciendo su aplicación lo que llevará a que esté prohibido.

El objective de C ++ está bien definido y es compatible con el gcc de Apple.

Pero no puedes mezclar classs de C ++ y C objective, lo que hace que esto sea un tanto desorderado bastante rápido. No creo que haya muchos proyectos en la naturaleza que mezclen C ++ y Objective C en gran medida.

Esto depende en gran medida de su biblioteca, pero si (realist) pudiera envolver el C ++ dentro de una biblioteca C, utilizando puntos de input externos "C" para toda la funcionalidad real, y vincularlo desde dentro de su código objective C para su aplicación de iPhone.

Acabo de empezar con el desarrollo de iPhone, pero he podido utilizar con éxito algunas versiones de C ++ existentes sin ningún cambio. Traigo algunas classs de OpenGL que ya he escrito y funcionan bien, ya que las gl libs en el iPhone son todas C y no Obj-C. Por ejemplo, estoy cargando una textura en una matriz de GLubyte usando Obj-C para get los resources, el tamaño, etc. y luego pasar esos valores a mi código de C ++ que hace las gl llamadas para crear la textura. Lo mismo se aplica para cargar geometry.

Simplemente cambie sus files .m a .mm y todo parece funcionar. Las classs de Objective C ++ pueden tener miembros que son classs de C ++ (aunque no creo que aplique la otra manera, lo que podría ser un problema).