J'ai maintenant la même question avec le titre ci-dessus mais je n'ai pas encore trouvé la bonne réponse. J'ai eu l'erreur:
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
duplicate symbol _OBJC_METACLASS_$_MoboSDK in:
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
ld: 75 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Toute aide est appréciée.
Enfin, je trouve la raison de cette erreur, car j'ai ajouté -ObjC
à la Other Linker Flags
. Après avoir supprimé cette valeur, je peux créer mon projet avec succès, mais je ne sais pas pourquoi. Quelqu'un peut-il expliquer cela?
#include
« d ou#import
» d quelque chose (probablement le MoboSDK, quelle qu'elle soit) plus d'une fois.GoogleConversionTrackingSDK-iOS-3.0
à mon projet.Avant cela, cela fonctionne bien.J'ai également essayé de le supprimer, mais l'erreur persiste.Réponses:
Signifie que vous avez chargé deux fois les mêmes fonctions. Comme la question disparaît après le retrait
-ObjC
deOther Linker Flags,
ce moyen que ce résultat de l' option que les charges de fonctions deux fois:de Technical Q&A
https://developer.apple.com/library/content/qa/qa1490/_index.html
la source
-ObjC
drapeau. Je dois donc avoir besoin de conserver cet indicateur dans les paramètres de mon projet. Pourriez-vous donc suggérer une autre solution?Pour moi, changer 'No Common Blocks' de Yes en No (sous Targets-> Build Settings-> Apple LLVM - Code Generation) a résolu le problème.
la source
NO
? Quelle est la raison derrière cela?Stupide, mais assurez-vous que vous n'avez pas
#import
édité un.m
fichier par erreur quelque partla source
Dans mon cas, je viens de créer un fichier d'en-tête pour définir des chaînes constantes comme ceci:
J'ai résolu ce scénario en utilisant
static
:la source
extern
lieu destatic
:extern NSString * const kNotificationName;
. Ce qui est étrange, car généralement, vous n'avez pas ajouté un tel préfixe, et cela a bien fonctionné.AppStrings.h
sont des constantes, mais cela causera des havok si vous voulez une variable mutable globale car chaque fichier source qui inclut le fichier d'en-tête aura sa propre copie de la variable. C'est une mauvaise solution.J'ai trouvé que la réponse acceptée touche au problème mais ne m'a pas aidé à le résoudre, j'espère que cette réponse aidera à résoudre ce problème très frustrant.
"Signifie que vous avez chargé deux fois les mêmes fonctions. Comme le problème disparaît après la suppression de -ObjC des autres indicateurs de l'éditeur de liens, cela signifie que cette option a pour résultat que les fonctions se chargent deux fois:"
En termes simples, cela signifie que nous avons deux fichiers dans notre projet avec exactement le même nom. Peut-être que vous combinez un projet dans un autre? Jetez un œil aux erreurs au-dessus de l'erreur "symboles en double" pour voir quel dossier est dupliqué, dans mon cas c'était BLoginViewController.
Par exemple, dans l'image ci-dessous, vous pouvez voir que j'ai deux BImageViewControllers, pour moi, c'est ce qui causait le problème.
Dès que j'en ai supprimé un, le problème a disparu :)
la source
J'ai le même problème. Dans Xcode 7.2 dans le chemin Project Target> Build Setting> No Common Blocks, je le change en NO.
la source
Se produit également lorsque vous déclarez des variables const avec le même nom dans une classe différente:
dans le fichier Message.m
dans le fichier Chat.m
la source
Cela s'est produit lorsque j'ai accepté la fenêtre contextuelle "Paramètres recommandés" sur un projet que j'ai développé il y a deux ans dans Objective-C.
Le problème était que lorsque vous avez accepté la mise à jour des "paramètres recommandés", Xcode a automatiquement modifié ou ajouté certains paramètres de build, notamment
GCC_NO_COMMON_BLOCKS = YES;
.Cela a fait échouer la construction avec l'
duplicate symbol
erreur dans mon projet mis à jour. J'ai donc changéNo Common Block
pourNO
dans mes paramètres de construction et l'erreur a disparu.la source
Le moyen le plus rapide de trouver le doublon est:
la source
Les étapes suivantes ont résolu le problème pour moi.
la source
Supprimez -ObjC des autres indicateurs de l'éditeur de liens ou vérifiez par erreur que vous avez importé un fichier .m au lieu de .h.
la source
.m"
j'ai remarqué que j'ai importé un fichier .m au lieu de .h et après avoir corrigé cela a juste fonctionné!Talk is cheap, show me the code!
À votre santé!Ma situation avec un projet hérité ouvert dans Xcode 7.3 était:
suivi d'une liste de deux fichiers non liés.o, puis cela a été répété plusieurs fois, puis finalement:
Ce qui a résolu le problème en changeant la déclaration d'énumération:
pour ça:
Si quelqu'un a une explication à cela, veuillez m'éclairer.
la source
La définition de la même variable sous @implementation dans plusieurs classes peut également provoquer ce problème.
la source
Dans mon cas, il y avait deux fichiers du même nom à l'emplacement
la source
Ça a marché pour moi
la source
J'ai rencontré ce problème après l'installation des Cocoapods. Cela se produit maintenant chaque fois que je mets à jour certains modules. Solution que j'ai trouvée:
Accédez au terminal:
Vérifiez également l'élément "Toujours intégrer les bibliothèques Swift" dans vos paramètres de génération. Il doit être "décoloré" pour indiquer qu'il utilise la configuration par défaut. S'il est défini sur OUI manuel, appuyez sur supprimer pour le restaurer à la configuration par défaut. Cela a arrêté le comportement.
la source
Pour moi, pendant la mise à jour des paramètres de projet recommandés par Xcode8, "No Common Blocks" sur YES, ce qui provoque ce problème.
la source
Aujourd'hui, j'ai eu la même erreur. Le mot clé de l'erreur est
duplicate
. Je le répare en:la source
Assurez-vous que vous n'avez pas importé un fichier .m par accident, vous souhaiterez peut-être supprimer vos données dérivées dans la fenêtre Projets, puis générer et réexécuter.
la source
Pour toute autre personne qui rencontre ce problème, je n'ai vu ma résolution dans aucune de ces réponses.
Après avoir rencontré un conflit de fusion .pbxproj qui a été résolu manuellement (quoique mal), il y avait des références en double aux fichiers de classe individuels dans le .pbxproj. La suppression de ceux du projet> phases de construction> sources de compilation a tout résolu pour moi.
J'espère que cela aidera quelqu'un sur toute la ligne.
la source
ld: X duplicate symbols for architecture x86_64
. Corrigé en supprimant les fichiers source mentionnés dans le message d'erreur et en les rajoutant à nouveau au projet.Similaire à Juice007, j'avais déclaré et initialisé une variable de type C dans deux fichiers .m différents (qui n'étaient pas importés!)
cependant, cette méthode de déclaration et d'initialisation d'une variable, même en .m, même en @implementation, lui confère une portée globale. Vos options sont:
Déclarez-le comme statique, pour limiter la portée à la classe:
Supprimez l'initialisation (ce qui fera que les deux classes partagent la var globale):
Déclarez-le comme une propriété:
Déclarez-le comme un iVar approprié dans @interface
la source
Dans mon cas, j'avais deux
main()
méthodes définies dans mon projet et en supprimer une a résolu le problème.la source
J'ai récemment eu mal à la tête à la recherche d'une source d'erreur. Je me suis demandé, quand j'ai découvert que mon application ne voulait pas compiler, simplement parce que j'avais l'extrait de code suivant dans différentes classes:
J'espère que cela pourrait aider quelqu'un.
la source
J'espère que cela vous aidera certainement
J'ai la même erreur 3 symboles en double pour l'architecture x86_64
dans mon cas, j'ai copié du code à partir d'un autre fichier du même projet, par exemple. code du fichier Am à Bm et après la compilation, j'ai eu une erreur comme mention. et j'ai résolu l'erreur en changeant le nom de la variable globale.
cette erreur est venue dans mon cas à cause de la même déclaration pour la variable globale dans les deux fichiers.
la source
J'ai la même erreur lorsque j'ai ajouté un référentiel de pod
pour un code source déjà ajouté (SWRevealViewController) de gitHub. Ainsi, l'erreur sera corrigée en supprimant le code source ou le référentiel pod.
Cas n ° 2:
La 2ème fois, cette erreur est apparue lorsque je déclare une constante dans le fichier .h .
la source
Les réponses ci-dessus n'ont pas fonctionné pour moi. Voici comment je l'ai contourné:
1) dans le Finder, supprimez l'intégralité du dossier Pods et du fichier Podfile.lock 2) fermez le projet xcode 3) exécutez l'installation de pod dans le terminal 4) ouvrez le projet xcode, exécutez la commande clean build
A travaillé pour moi après ça.
la source
Le même problème se produit avec moi, lorsque j'intégrais le projet lob dans mon projet.
En fait, le projet lob a également les fichiers AFNetworking, donc je supprime les fichiers .m du projet lob.
En fait, les fichiers .m sont en conflit avec les fichiers POd / AFNetworking / .m de mon projet
la source
Dans Xcode 6.3.2. J'ai vérifié toutes les possibilités comme ci-dessous
1: Je n'ai pas importé de fichier .m dans mon projet.
2: supprimé
-ObjC
de l' indicateur Autre éditeur de liens .3: Suppression de toutes mes données dérivées .
je reçois toujours la même erreur. J'ai supprimé cette erreur en supprimant toute déclaration de variable du
.pch
fichier . dans mon cas, j'ai déclaré l'AppDelegate
objet dans le.pch
fichier. enfin j'ai trouvé la raison de cette erreur. donc je supprime la déclaration de toute variable du fichier .pch et mon charme de travail de projet.la source
Une autre erreur stupide qui provoquera cette erreur est la répétition des fichiers. J'ai accidentellement copié deux fichiers deux fois. Je suis d'abord allé dans Targets -> Build Phases -> Compile sources. Là, j'ai remarqué deux fichiers sur cette liste et leurs emplacements.
la source
J'ai également cette erreur aujourd'hui, car j'ai défini une valeur const dans un
.m
fichier, mais j'ai défini un autre.m
fichier qui comprenait également cette valeur const, ce qui signifie qu'il a deux mêmes valeurs const.Cette erreur apparaît. Et ma solution consiste à ajouter un mot clé "static
" avant la valeur const.tels que:Et puis je construis le projet, il ne signalera pas cette erreur.
la source