2011-06-26 8 views
6

Entonces necesito usar vectores en mi proyecto. Cambié el archivo .m a .mm para convertirlo en Objective-C++. Pero, cuando trato de decir:#include <vector> tal archivo o directorio

#include <vector> 

En mi .h dice que el archivo o directorio no se puede encontrar. Si puse esa línea de código en mi archivo .mm aunque el error no aparece, pero como necesito un vector en el @interface (que está en mi .h), ¿qué debo hacer para que el archivo .h encuentre el archivo de vector?

Además, he intentado cambiar a compilar todo como Objective-C++, pero eso no quiere trabajar porque consigo algunos errores en la biblioteca Cocos2d estoy usando ...

Respuesta

27

Está su archivo .h siendo incluido en cualquier otro archivo .h o .m?

Si es así, deberá convertir esos (o archivos que los incluyen, etc.) en .mm también.

+0

¿Así que combina el .h y el .mm juntos? – Dair

+5

No. Este archivo de encabezado particular (digamos x.h) se incluye naturalmente en x.mm, pero presumiblemente también está utilizando objetos de tipo x en algún otro módulo, digamos y. Por lo tanto, y.h incluirá la línea "#include x.h". Ahora cuando el compilador está compilando y.m, no esperará el código C++, por lo que se quejará de que la línea de x.h "incluya " cuando se encuentre con el compilador. Por lo tanto ym debe ser renombrado y.mm, aunque no esté usando ningún código C++ en y.mm Finalmente, yh puede incluirse en, por ejemplo, zh y debe convertir zm a z.mm, etc. Por lo tanto, es más fácil incluirlo el vector en el archivo mm si puedes. – mackworth

+0

Ok, eso funcionó. ¡Gracias! – Dair

6

sin cambiar ninguna .m a .MM ni nada de eso, si hace clic en su proyecto, haga clic en tagets-> Valores de creación recorrer todo el camino hasta "LLVM GCC 4.2 - Idiomas" verá Fuentes de compilación Como, cambie ese valor a Objetivo-C++;

Cuestiones relacionadas