Domanda

sto usando TextMate di fare alcuni esercizi Objective-C. Quando tutto è in un unico file, funziona benissimo, ma non appena ho voglia di lavorare con più file dà un errore. Ad esempio, ho un file Rectangle.h separata da importare:

#import "Rectangle.h"

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

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

    [pool drain];
    return 0;
}

dà esecuzione di questo errore:

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

Sto usando il comando "Esegui" del pacchetto C. Utilizzando il comando del pacchetto Xcode "Build & Run" mi dà un errore diverso.

Come posso fare TextMate importare il mio file Rectangle.h ed eseguire?

È stato utile?

Soluzione

Non è un errore di compilazione, ma un errore di linker. Il tuo importazione dovrebbe andare bene, a patto che sia nella stessa directory del file principale.

Credo che si dovrebbe anche avere un file Rectangle.m. È necessario compilare entrambi i file (Rectangle.m e il file principale) come file oggetto (con l'argomento -c), e poi collegarli insieme per produrre un eseguibile.

O semplicemente compilare entrambi i file insieme:

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

Si noti che se i file di intestazione sono in una directory separata, è possibile specificare che a GCC utilizzando gli argomenti -i o -I.

Modifica

Ho appena visto una menzione di Xcode. Si sta utilizzando Xcode o TextMate?

Se si compila utilizzando Xcode, e l'errore, è probabile che il file Rectangle.m non fa parte del vostro obiettivo Xcode principale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top