Pregunta

Estoy usando TextMate para hacer algunos ejercicios de Objetivo-C. Cuando todo está en un archivo, funciona bien, pero tan pronto como quiero trabajar con múltiples archivos, da un error. Por ejemplo, tengo un separado Rectangle.h Archivo a importar:

#import "Rectangle.h"

int main (int argc, char *argv[]) {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    Rectangle *rectangle = [[Rectangle alloc] init];

    [pool drain];
    return 0;
}

Ejecutar da este error:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_Rectangle", referenced from:
      objc-class-ref in ccccStDD.o
ld: symbol(s) not found for architecture x86_64

Estoy usando el comando "Ejecutar" del paquete C. Usar el comando Xcode Bundle "Build & Run" me da un error diferente.

¿Cómo puedo hacer que el compañero de texto importe mi Rectangle.h archivo y ejecutar?

¿Fue útil?

Solución

No es un error del compilador, sino un error de enlazador. Su importación debe estar bien, siempre que esté en el mismo directorio que su archivo principal.

Supongo que también deberías tener un Rectangle.m expediente. Necesita compilar ambos archivos (Rectangle.m y su archivo principal) como archivos de objetos (con el -c argumento), y luego vincularlos para producir un ejecutable.

O simplemente compilar ambos archivos juntos:

gcc -Wall -framework Foundation -o test test.m Rectangle.m

Tenga en cuenta que si sus archivos de encabezado están en un directorio separado, puede especificarlo a GCC usando el -i o -I argumentos.

EDITAR:

Acabo de ver una mención de Xcode. ¿Estás usando Xcode o TextMate?

Si compila usando xcode y obtiene el error, es probable que su Rectangle.m El archivo no es parte de su objetivo principal de Xcode.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top