Frage

Ich verwende Textmate, um einige objektive C-Übungen durchzuführen. Wenn sich alles in einer Datei befindet, funktioniert es gut, aber sobald ich mit mehreren Dateien arbeiten möchte, gibt es einen Fehler. Zum Beispiel habe ich eine separate Rectangle.h Datei zu importieren:

#import "Rectangle.h"

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

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

    [pool drain];
    return 0;
}

Laufen gibt diesen Fehler:

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

Ich verwende den Befehl "Run" des C -Bundle. Wenn Sie den Befehl "Build & Run" des Xcode Bundle verwenden, erhalten Sie einen anderen Fehler.

Wie kann ich Textmate meine importieren lassen Rectangle.h Datei und Ausführen?

War es hilfreich?

Lösung

Es ist kein Compiler -Fehler, sondern ein Linkerfehler. Ihr Import sollte in Ordnung sein, solange er sich im selben Verzeichnis wie Ihre Hauptdatei befindet.

Ich denke du solltest auch eine haben Rectangle.m Datei. Sie müssen beide Dateien kompilieren (Rectangle.m und Ihre Hauptdatei) als Objektdateien (mit dem -c Argument) und dann miteinander verbinden, um eine ausführbare Datei zu erzeugen.

Oder kompilieren Sie einfach beide Dateien zusammen:

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

Beachten Sie, dass Sie es mit dem GCC an GCC angeben können, wenn sich Ihre Header -Dateien in einem separaten Verzeichnis befinden -i oder -I Argumente.

BEARBEITEN:

Ich habe gerade eine Erwähnung von Xcode gesehen. Verwenden Sie Xcode oder Textmate?

Wenn Sie mit XCode kompilieren und den Fehler erhalten, ist es wahrscheinlich, dass Ihre wahrscheinlich ist Rectangle.m Die Datei ist nicht Teil Ihres Haupt -Xcode -Ziels.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top