71 votes

la commande de liaison a échoué avec le code de sortie 1 (utilisez -v pour voir l'invocation)

J'obtiens cette erreur soudainement lorsque je lance mon application via le simulateur iPhone :

clang : error : linker command failed with exit code 1 (use -v to see l'invocation) :

ld : duplicate symbol _OBJC_CLASS_$_Algebra5FirstViewController in .../Algebra5-anwcuftojtxtgkfootneeeqhwztj/Build/Intermediates/Algebra5.build/Debug-iphonesimulator/Algebra5.build/Objects-normal/i386/ExercisesViewController.o et .../Algebra5-anwcuftojtxtgkfootneeeqhwztj/Build/Intermediates/Algebra5.build/Debug-iphonesimulator/PSLE Algebra5.build/Objects-normal/i386/PSLE_Algebra5FirstViewController.o pour l'architecture i386

De quoi s'agit-il ?

67voto

J_D Points 2225

Il semble que la classe Algebra5FirstViewController soit compilée plusieurs fois.

Pouvez-vous vous assurer que les fichiers .m et .mm sont inclus une seule fois dans les sources de votre projet dans Xcode ? Vous pouvez également le confirmer en vérifiant dans le journal de compilation (dernière icône à droite, à côté de l'icône des points d'arrêt) et voir qu'il confirme qu'il n'est compilé qu'une seule fois.

De même, si cette classe fait partie d'une bibliothèque avec laquelle vous établissez des liens et que vous avez une classe portant le même nom, vous pourriez avoir la même erreur.

Enfin, vous pouvez essayer de nettoyer et de reconstruire, juste au cas où les anciens fichiers d'objets seraient encore présents et où il y aurait des déchets dans les fichiers compilés. Juste au cas où...

EDIT

Je note également que la deuxième référence est faite dans le fichier pour ExercisesViewController. Il y a peut-être quelque chose dans ce fichier. Soit vous avez #importé le fichier Algebra5FirstViewController au lieu du fichier .h, soit ExercisesViewController a @implementation (Algebra5FirstViewController) au lieu de @implementation (ExercisesViewController), soit il y a eu des déchets dans ce fichier qui seront nettoyés avec un Clean an Rebuild.

51voto

Andreas Ley Points 4830

Cela peut arriver si le même fichier .m est référencé plusieurs fois dans la section "Compile Sources" de votre cible dans "Build Phases". Supprimez les entrées dupliquées et tout devrait bien se passer.

30voto

toblerpwn Points 1517

a également rencontré ce problème en déclarant une const * NSString dans le fichier d'en-tête (incorrectement) au lieu du fichier d'implémentation (correctement)

24voto

user441669 Points 608

J'ai eu ce problème parce que j'ai accidentellement importé le .m au lieu du .h. J'espère que cette lecture permettra à quelqu'un qui a le même problème de gagner du temps.

5voto

Eric Points 966

J'ai obtenu une erreur similaire en ajoutant des fichiers d'un autre projet, comme @paiego l'a expliqué. Mon erreur est que je n'ai pas vérifié " Ajouter aux objectifs ". Comme expliqué ci-dessus, j'ai supprimé les références et ajouté les fichiers à nouveau, mais cette fois en vérifiant " Ajouter aux objectifs ".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X