Symboles non définis pour l'architecture x86 64 sur Xcode 6.1
Tout d'un coup Xcode m'a jeté cette erreur au moment de la compilation:
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_Format", referenced from:
objc-class-ref in WOExerciseListViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Après avoir fait quelques recherches, je peux comprendre qu'une bibliothèque que j'utilise n'est pas compatible avec la version 64 bits. Mais c'est très étrange puisque je travaille avec les mêmes bibliothèques depuis au moins une semaine sans avoir un seul problème de compilation pendant ce temps. Les deux bibliothèques sont juste composées d'un tas de classes, et quand je les ai supprimées de mon projet, j'ai eu le même problème. Depuis je n'ai jamais créé des bibliothèques moi-même, je n'ai aucune idée de comment je peux trouver si ceux que j'utilise sont compatibles avec 64 bits (?) J'ai également essayé les modifications suivantes pour les architectures sous le panneau cible:
- ajouté $(ARCHS_STANDARD_INCLUDING_64_BIT) aux Architectures
- construire une architecture active uniquement - > définir sur ' NO '
- pour 'architectures valides' - > défini sur arm64, armv7 et armv7s
- supprimé le dossier DerivedData et son contenu, nettoyé et construit à nouveau
Mais aucun de ces changements ne fonctionne. S'il vous plaît, quelqu'un a une idée sur ce point? Merci
13 réponses
Apparemment, votre classe "Format" est impliquée dans le problème. Vérifiez votre déclaration de cette classe, surtout si vous l'avez fait dans une autre classe, vous avez probablement oublié l'implémentation @ou quelque chose de similaire.
Vérifiez si ce fichier est inclus dans les Phases de construction - > sources compilées
Assurez-vous que WOExerciseListViewController est un membre cible; cela a fonctionné pour moi!
Oui, je pense que la bibliothèque que vous utilisez n'est pas compatible avec la version 64 bits, mais vous pouvez résoudre le problème -
Il suffit de naviguer pour construire des paramètres > Architectures et remplacer $(ARCHS_STANDARD)
à $(ARCHS_STANDARD_32_BIT)
Afin que votre xcode construise votre projet avec une version 32 bits prise en charge.
Je viens d'avoir cette erreur quand j'ai ouvert un (assez) vieux projet, créé dans Xcode 4~ish, dans Xcode 6.4. Alors que les Frameworks liés étaient visibles dans la barre latérale du projet, j'ai négligé qu'il n'y avait pas de bibliothèques liées dans L'onglet phases de construction Cible . Une fois que j'ai corrigé cela, il a bien compilé.
Je ne Liais tout simplement pas les bibliothèques dans la section" Link Binary with Libraries".
J'ai résolu le même problème en allant dans les paramètres de construction Xcode et dans les Architectures, j'ai changé l'architecture standard Xcode 6.1.1 à: -
$(ARCHS_STANDARD_32_BIT)
, Il s'est avéré que j'ai oublié d'écrire mon @implementation
pièce.
Même erreur lorsque j'ai copié / collé une classe et oublié de la renommer .m de fichier.
J'ai résolu le problème en supprimant la référence au fichier et l'ajouter à nouveau dans le projet. Dans mon cas ça fonctionne.
J'ai juste eu exactement la même erreur, et résolu en redémarrant xcode.
Pour moi, le problème s'est produit après une mise à jour svn, le fichier en question a été ajouté au dossier projets, mais il n'est jamais apparu dans xcode – 9.3.1) - jusqu'à ce que je le redémarre.
Ce paramètre a fonctionné pour moi:
- Architectures=$(ARCHS_STANDARD_32_BIT)
- Construire une Architecture Active uniquement: oui
- Architectures valides armv6 armv7 armv7s arm64
Supprimer la $(ARCHS_STANDARD)
et ajouter le $(ARCHS_STANDARD_32_BIT)
.