Come posso ottenere TextMate al lavoro con i file importati?
-
26-10-2019 - |
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?
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.