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

35
demandé sur batistomorrow 2014-10-25 10:32:07

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.

39
répondu Banane 2018-03-18 06:35:14

Vérifiez si ce fichier est inclus dans les Phases de construction - > sources compilées

36
répondu user3894518 2015-03-11 00:20:30

Assurez-vous que WOExerciseListViewController est un membre cible; cela a fonctionné pour moi!

entrez la description de l'image ici

19
répondu Youssef Gamil 2015-02-25 14:10:24

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.

4
répondu Nishant Mahajan 2015-01-14 06:49:20

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é.

4
répondu auco 2015-08-27 12:38:28

Je ne Liais tout simplement pas les bibliothèques dans la section" Link Binary with Libraries".

2
répondu Alberto M 2017-02-09 08:51:18

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)

1
répondu Hemanshu Liya 2015-01-08 12:35:29

, Il s'est avéré que j'ai oublié d'écrire mon @implementation pièce.

1
répondu chengbo 2015-06-16 17:39:32

Même erreur lorsque j'ai copié / collé une classe et oublié de la renommer .m de fichier.

0
répondu zeeawan 2015-06-08 21:12:53

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.

0
répondu Nikita Teplyakov 2017-06-18 17:54:00

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.

0
répondu Seif Meddeb 2018-05-29 09:59:50

Ce paramètre a fonctionné pour moi:

  • Architectures=$(ARCHS_STANDARD_32_BIT)
  • Construire une Architecture Active uniquement: oui
  • Architectures valides armv6 armv7 armv7s arm64
-2
répondu issam 2015-07-14 10:27:59

Supprimer la $(ARCHS_STANDARD) et ajouter le $(ARCHS_STANDARD_32_BIT).

entrez la description de l'image ici

-3
répondu Koppi 2015-12-20 01:12:36