Question

J'utilise TextMate pour faire quelques exercices Objective-C. Quand tout est dans un fichier, il fonctionne très bien, mais dès que je veux travailler avec des fichiers multiples, il donne une erreur. Par exemple, j'ai un fichier séparé Rectangle.h à importer:

#import "Rectangle.h"

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

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

    [pool drain];
    return 0;
}

lorsqu'il fonctionne cette erreur:

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

J'utilise la commande « Exécuter » du paquet C. En utilisant la commande "Build & Run" de paquet Xcode me donne une autre erreur.

Comment puis-je faire TextMate importer mon fichier Rectangle.h et exécuter?

Était-ce utile?

La solution

Il est pas une erreur du compilateur, mais une erreur de liaison. Votre importation devrait être bien, tant qu'il est dans le même répertoire que votre fichier principal.

Je suppose que vous devez aussi avoir un fichier Rectangle.m. Vous devez compiler les fichiers (Rectangle.m et votre fichier principal) sous forme de fichiers d'objets (avec l'argument -c), puis de les relier ensemble pour produire un fichier exécutable.

Ou simplement compiler les deux fichiers ensemble:

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

Notez que si vos fichiers d'en-tête sont dans un répertoire distinct, vous pouvez spécifier à GCC en utilisant les arguments de -i ou -I.

EDIT:

Je viens de voir une mention de Xcode. Utilisez-vous Xcode ou TextMate?

Si vous compilez en utilisant Xcode et obtenez l'erreur, il est probable que votre fichier Rectangle.m ne fait pas partie de votre cible principale de Xcode.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top