double symboles pour l'architecture i386 clang
J'ai vu plusieurs posts sur google et stackoverflow liés à cette erreur, j'ai lu tous d'entre eux, mais encore aller chercher le problème , je serai heureux pour trouver une solution. Voici le mesage d'erreur, j'obtiens lors de la compilation ...
répertoire introuvable pour l'option '-L/Utilisateurs/mondossier/Documents/Bharat/MyApp copier/GoogleAdMobAdsSDK'
dupliquer le symbole _OBJC_CLASS_$_AppDelegate dans:
/Users/madept/Library/Developer/Xcode/DerivedData/Alpha-dvvymdlmzseytagllsmbbrxdgutz/Build/Intermediates/Alpha.build/Debug-iphonesimulator/Alpha.build/Objects-normal/i386/AppDelegate-56890B6B994A4284.o
Grâce.
- C'est deux erreurs - avez-vous un répertoire /Users/mondossier/Documents/Bharat/MyApp copier/GoogleAdMobAdsSDK
- j'ai ajouté AdMob de la bibliothèque.
- le message d'erreur indique que vous n'avez pas - ce qui ne
ls /Users/somefolder/Documents/Bharat/MyApp\ copy/GoogleAdMobAdsSDK
montrer - Lisez ceci, il pourrait également aider: stackoverflow.com/questions/3731470/...
Vous devez vous connecter pour publier un commentaire.
Une autre raison de cette erreur arrive souvent accidentelle de l'importation de la .m fichier au lieu de l' .h.
Suit:
qui est la dernière.
Juste pour ajouter à la liste des solutions possibles.
Dans mon cas, j'avais accidentellement déclaration et initialisation d'une variable dans un fichier d'en-tête.
Par exemple c'est faux:
MyFile.h
Il devrait être:
MyFile.h
MyFile.m
#define
eux.Aller Paramètre de construction et de recherche pour Pas de Blocs Communs et définir PAS. Et encore vous n'obtiendrez pas cette erreur à nouveau.
J'ai trouvé que j'ai fait l'erreur quand j'ai eu un
const
déclaré dans un .m fichier avec le même nom qu'un autreconst
dans un autre .m de fichier. Les deux fichiers #inclus le même fichier parent.J'ai vécu cet après recréer une classe de modèle de Base de Données. L'option de menu pour créer des classes d'objet créé une copie du modèle de la classe. une fois que j'ai enlevé la dupe, erreur disparu...
De l'éditeur de liens erreurs montrent toujours un problème quant à l'utilisation de la bibliothèque ou des problèmes d'importation.
Parfois, l'erreur se produit lorsque vous avez importé un .m fichier au lieu d'un .h fichier.
Veuillez vérifier votre code et de chercher un .m instruction import dans l'un de vos fichiers d'en-tête (.h extension), j'ai eu un problème similaire et 14 dupliquer le symbole d'erreur soulevée.
Vérifier si vous avez importé
ViewControler.m
à la place de son .h,de Sorte qu'il a à être de cette façon :et votre
AppDelegate.h
devrait être quelque chose comme ceci :Rappelez-vous toujours d'importer des fichiers d'en-tête pas un .m
Si d'autres personnes ont essayé tous les autres réponses et il ne fonctionne toujours pas, essayez de l'ouverture de l' .xcodeproj fichier avec votre éditeur de texte favori et à la recherche pour le nom de la classe du problème. Assurez-vous de fermer Xcode avant de le faire. Dans le fichier, il devrait y avoir une ligne pour le .h et une autre ligne pour les .m. Si il y a des doublons, supprimer, enregistrer le fichier, et de re-construire.
J'ai eu ce problème avec un cadre que je savais déjà travaillé dans un autre projet. J'avais copié les fichiers dans l'autre projet et de l'ajouter à celui-ci. Ensuite, lors de la construction j'ai eu 76 dupliquer des erreurs.
La solution la plus simple pour moi a été de retirer
-ObjC
d'Autres Drapeaux de l'éditeur de liens. Le projet précédent n'en avait pas. Une fois que je l'ai fait, l'avertissement a disparu et le projet construit avec succès.J'ai eu cette erreur lorsque j'avais une bibliothèque statique inclus dans le projet principal, tout en incluant une deuxième bibliothèque qui avait aussi une référence à la bibliothèque. C'est assez déroutant, c'est peut-être plus clair.
MyWorkspace
+ Projet Principal
+ Référence à la bibliothèque de 1
+ Référence à la bibliothèque 2
+ 1 bibliothèque
+ Bibliothèque 2
+ Référence à la bibliothèque de 1
J'ai supprimé la référence à la bibliothèque de 1 du projet principal et l'erreur a disparu.
Une autre raison peut être que le projet est ciblé sur un simulateur à la place d'un véritable dispositif lors de la construction d'une distribution-version. Qui provoque également ce message d'erreur.
J'ai finalement trouvé la solution-
à partir de l'espace de travail ainsi).
Façon la plus simple de résoudre ce problème Xcode 7.0 ou de dernière juste de changement pas de Blocs Communs ou PAS, il permettra de résoudre votre problème, essayez ce Projet Target > Paramètre de construction > Pas de Blocs Communs, je le change ou PAS.
Dans certains cas, vous pouvez également obtenir un "double symboles de l'architecture..." erreur en raison du fait que vous avez accidentellement déclaré une constante (const) avec le même nom dans deux fichiers différents.
Je l'ai eu lorsque j'ai défini la même fonction C deux fois. Dans deux différents
.m
fichiers. Retirez simplement l'une des définitions et le tour est joué.J'ai essayé de nettoyer le projet, a effacé toutes les données dérivées. Rien n'a fonctionné. Atlas, cela a fonctionné pour moi.
Une autre raison peut être que le projet est ciblé sur un simulateur à la place d'un véritable dispositif lors de la construction d'une distribution-version. Qui provoque également ce message d'erreur.
C'était différent pour moi, j'ai copié sur l'implémentation de la classe des méthodes, comme l'est et le iVars ont également été copié... donc dans le monde de la iVars il y a deux ensembles et le compilateur plaignais double ivars avant de lier l' *.o fichiers.
la lecture de la sortie aidé donc supprimé tous les dupliquer ivars... grâce à la nouvelle fonctionnalité où vous n'avez pas @synthétiser tous vos biens... l'erreur est allé loin...
J'ai eu le même message d'erreur lors de la configuration de OCMock. Je l'ai fixée par ajouter la libOCMock.dans la Copie des Fichiers de la section de la Construction de la Phase
J'ai eu ce message d'erreur après avoir copie & coller un fichier de test dans le projet, en oubliant de changer le nom de l'interface et la mise en œuvre des lignes:
et
Stupide erreur... je suggère également de consulter le "phases de construction" onglet sur le projet, afin de vérifier les doublons. La suppression de la dérivée des données et de faire un nettoyage de construire peut aider ainsi.
J'ai importé les fichiers à partir d'un autre projet, il avait en main.m fichier ainsi. Donc dans l'ensemble j'ai eu deux principales.m de fichiers, la suppression d'un résolu le problème pour moi.
Parfois le croire ou pas, Xcode vis le fichier de projet. La seule solution que nous avons trouvée a été de supprimer manuellement chaque référence pour le fichier avi à l'aide d'un éditeur de texte, puis de le ré-ajouter les fichiers dans Xcode.
Note à moi-même: "LIRE L'ERREUR!"
Dans mon cas, il dit ceci:
duplicate symbol _OBJC_CLASS_$_SATCoreData in:
Traduction: un Objectif C Classe appelée
SATCoreData
est dupliqué.Puis il donne le chemin d'accès pour les deux occurrences du symbole. La lecture de la trajectoire de points pour les deux la classe de fichier se terminant par
.o
. Si vous regardez les deux classes, vous trouverez quelque chose de louche. Dans mon cas, j'avais accidentellement donné deux classes de même nom. Une classe que j'avais à l'intérieur du fichier d'une autre classe parce que j'ai été le tester quelque chose et était trop paresseux pour faire une classe à part. Espérons que cela aide quelqu'un.J'ai eu ce problème et j'ai été bloqué pendant un certain temps. La seule chose pour moi qui a causé le problème était que j'ai écrit certains boolean dans .h fichier (entre le n ° d'importation et d' @interface) et de les utiliser dans mon .m fichier
J'ai simplement supprimé de mon .h fichier et et copiées dans la même place dans mon .m fichier et de le construire à réussir.
Prises de https://stackoverflow.com/a/2755581/190599
Ce que vous pouvez faire est de mettre dans votre en-tête (
MyConstants.h
):Et dans un fichier source, inclure l'en-tête ci-dessus, mais de définir les constantes (
MyConstants.m
):Ensuite, il vous suffit d'inclure l'en-tête dans tout autre fichier source qui utilise l'une de ces constantes. L'en-tête est le simple fait de déclarer que ces constantes existent quelque part, donc le compilateur ne pas se plaindre, parce que c'est l'éditeur de liens de travail pour résoudre ces noms de constantes. Le fichier source qui contient les définitions de constantes obtient compilé, et l'éditeur de liens voit que c'est là que les constantes sont, et résout toutes les références trouvées dans les autres fichiers source.
Le problème avec la déclaration et la définition d'une constante dans un en-tête (qui n'est pas déclarée comme
static
), c'est que le compilateur traite comme un mondiaux indépendants pour chaque fichier comprend que l'en-tête. Lorsque l'éditeur de liens cherche à relier l'ensemble de vos sources compilées ensemble, il rencontre le nom global autant de fois que vous avez inclusMyConstants.h
.