2012-02-12 17 views
8

Tuve un problema para combinar C++ y objetivo-c juntos en el desarrollo de una aplicación para iPhone. Tenía una biblioteca de terceros para usar en la aplicación. Tenía un plan para usar c o C++ para envolver la biblioteca y luego usar objetivo-c para llamarlo. Después de que terminé la clase con C++, tuve problemas para usarlo en Object-C. ¿Hay algún código de muestra? Gracias.Cómo usar C++ y objetivo-c juntos en XCode 4.2

en el archivo de cabecera object-c. Escribo

#import <UIKit/UIKit.h> 
#import "ZJTConstants.h" 
#include "TTSAdapter.h" 

class Adapter; 
@interface ZJTVBlogViewController : UIViewController { 
@private 
    Adapter* adapter; 
} 
@end 

y en el archivo mm, escribo:

if (self) { 
    adapter = Adapter::getInstance(); 
    // Custom initialization 
} 

personal ¿Se escribe?

+0

¿Qué problema ...? –

+0

Parece que está utilizando el archivo '.mm', entonces, ¿cuál es el problema? usted no nos ha dicho qué problema está enfrentando. – Krizz

+0

Dice que hay algunos errores de compilación, por lo que me preguntaba si hay algún problema en la sintaxis. – seanxiaoxiao

Respuesta

5

Llamando código C++ de código de Objective-C consiste en poner fin a su archivo con .mm (en lugar de .m) de modo que se utilizará el compilador de Objective-C++.

Este compilador puede comprender tanto C++ como Objective-C.

En otras palabras, el compilador ObjC++ le permite poner código C++ directamente en métodos Objective-C, y viceversa.

Eche un vistazo a Cocoa_With_Carbon_or_CPP example y Strategies for Using C++ in Objective-C Projects (and vice versa) artículo.

6

Simplemente cambie el nombre de su archivo para tener una extensión de .mm en lugar de .m.

Para mezclar código C++ con código Objective-C, necesitará el compilador Objective-C++. XCode compila por defecto .m archivos con el compilador Objective-C y .mm con Objective-C++ uno.

8

En XCode hay un indicador para compilar todos los archivos como Objective-C++. Lo he usado para compilar enormes bibliotecas de C++ en los programas de iOS.

Si mira la "Configuración de compilación" hay un lugar escrito "Compilar fuentes como". Hay un menú desplegable donde puede seleccionar Objective-C++. En la línea de comandos de clang/gcc creo que es "-x objetivo-C++".

+1

El tamaño no importa Lo que tienes que hacer es cambiar la extensión a .mm de la clase que contiene el código C++ ... –

+3

@HikmatKhan Lo que sugerí es que a veces renombrar archivos, especialmente en proyectos grandes (multipersonas) no es realmente una opción. –

+0

¿Cómo se llama esa bandera? – kevlar