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 découvre la raison de cette erreur car j'ai ajouté -ObjC
au Other Linker Flags
. Après avoir supprimé cette valeur, je peux construire mon projet avec succès, mais je ne sais pas pourquoi. Quelqu'un peut-il expliquer cela?
75 symboles en double pour l'architecture x86_64
Cela signifie que vous avez chargé deux fois les mêmes fonctions. Comme le problème disparaît après la suppression de -ObjC
de Other Linker Flags,
, Cela signifie que cette option entraîne le chargement de deux fois:
de Q & A technique
Cet indicateur force l'éditeur de liens à charger chaque fichier objet de la bibliothèque qui définit une classe ou une catégorie Objective-C. Alors que cette option sera Le résultat est généralement un exécutable plus volumineux (en raison du code objet supplémentaire chargé dans l'application), cela permettra la création réussie de bibliothèques statiques Objective-C efficaces contenant des catégories sur classes existantes.
https://developer.Apple.com/library/content/qa/qa1490/_index.html
Pour moi, le remplacement de Yes par No (non commun) par Block Blocks (sous Targets-> Build Settings-> Apple LLVM - Code Generation) a résolu le problème.
Stupide, mais assurez-vous que vous n'avez pas #import
ed un fichier .m
par erreur quelque part
Dans mon cas, je viens de créer un fichier d'en-tête pour définir des chaînes constantes comme ceci:
NSString *const AppDescriptionString = @"Healthy is the best way to keep fit";
J'ai résolu ce scénario en utilisant static
:
static NSString *const AppDescriptionString = @"Healthy is the best way to keep fit";
J'ai le même problème . Dans Xcode 7.2 dans le chemin du projet Cible> Paramètre de construction> Pas de bloc commun, je le change en NO.
Cela m’est arrivé lorsque j’ai accepté la «fenêtre de configuration recommandée» d’un projet que j’ai développé il ya deux ans en Objective-C.
Le problème était que lorsque vous avez accepté la mise à jour des "paramètres recommandés", Xcode a modifié ou ajouté automatiquement certains paramètres de construction, notamment GCC_NO_COMMON_BLOCKS = YES;
.
Cela a rendu la construction a échoué avec l'erreur duplicate symbol
dans mon projet mis à jour. J'ai donc changé No Common Block
en NO
dans mes paramètres de construction et l'erreur a disparu.
Cela 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
const int kMessageLength = 36;
@implementation Message
@end
dans le fichier Chat.m
const int kMessageLength = 20;
@implementation Chat
@end
J'ai trouvé que la réponse acceptée touchait le problème, mais ne m'aidait pas à le résoudre. J'espère que cette réponse aidera à résoudre ce problème très frustrant.
duplicate symbol _OBJC_IVAR_$_BLoginViewController._hud in:
17 duplicate symbols for architecture x86_64
"Cela signifie que vous avez chargé deux fois les mêmes fonctions. Comme le problème disparaît après la suppression de -ObjC d'autres indicateurs de lieur, cela signifie que cette option entraîne le chargement de deux fois:"
En termes simples, cela signifie que nous avons deux fichiers dans notre projet avec exactement le même nom. Peut-être combinez-vous un projet dans un autre? Examinez les erreurs ci-dessus l'erreur "symboles en double" pour voir quel dossier est dupliqué. Dans mon cas, il s'agissait de BLoginViewController.
Par exemple, dans l'image ci-dessous, vous pouvez voir que j'ai deux BImageViewControllers. Pour moi, c'est ce qui était à l'origine du problème.
Dès que j'en ai effacé un, le problème a disparu :)
Supprimez -ObjC d'autres drapeaux de l'éditeur de liens ou Vérifiez que vous avez importé un fichier .m au lieu de .h par erreur.
Les étapes suivantes ont résolu le problème pour moi.
Le moyen le plus rapide de trouver le duplicata est:
Définir la même variable sous @implementation dans plusieurs classes peut également être à l'origine de ce problème.
Dans mon cas, il y avait deux fichiers du même nom à l'emplacement
Cibles> Phases de construction> Compiler les sources et supprimer tous les fichiers en double.
Ma situation avec un projet hérité ouvert dans Xcode 7.3 était:
duplicate symbol _SomeEnumState in:
suivi de la liste de deux fichiers.no non liés, puis cela a été répété plusieurs fois, puis finalement:
ld: 8 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Ce qui a résolu le problème pour moi a été de changer la déclaration enum de:
enum SomeEnumState {
SomeEnumStateActive = 0,
SomeEnumStateUsed = 1,
SomeEnumStateHidden = 2
} SomeEnumState;
pour ça:
typedef NS_ENUM(NSUInteger, SomeEnumState) {
SomeEnumStateActive = 0,
SomeEnumStateUsed = 1,
SomeEnumStateHidden = 2
};
Si quelqu'un a une explication à cela, veuillez m'éclairer.
Pour moi, pendant le Xcode8, les paramètres de projet recommandés mettent à jour "No Common Blocks" sur YES, ce qui provoque ce problème.
dans les paramètres de construction, définissez "Pas de blocs communs" sur NO. Ça marche pour moi
Comme pour Juice007, j'avais déclaré et initialisé une variable de type C dans deux fichiers .m différents (non importés!).
BOOL myVar = NO;
cependant, cette méthode de déclaration et d'initialisation d'une variable, même en .m, même dans @implementation, lui confère une portée globale. Vos options sont:
Déclarez-le comme statique, pour limiter la portée à la classe:
static BOOL myVar = NO;
Supprimez l'initialisation (ce qui obligera les deux classes à partager la variable globale):
BOOL myVar;
-(void) init{
myVar = NO;
}
Déclarez-le comme une propriété:
@property BOOL myVar;
Déclarez-le comme un iVar approprié dans @interface
@interface myClass(){
BOOL myVar;
}
@end
J'ai eu la même erreur quand j'ai ajouté un référentiel de pod
pod 'SWRevealViewController'
pour un code source déjà ajouté (SWRevealViewController) à partir de gitHub. Ainsi, l'erreur sera corrigée en supprimant le code source ou le référentiel de pod.
Cas n ° 2:
La deuxième fois, cette erreur est apparue lorsque je déclarais une constante dans le fichier .h .
NSString * const SomeConstant = @"SomeValue";
@interface AppDelegate : UIResponder <UIApplicationDelegate> {
...
...
Aujourd'hui, j'ai la même erreur. La clé de l'erreur Word est duplicate
. Je le répare par:
1. Remove the duplicate file at Build Phases-->Compile Sources
2. If you can not remove it at Build Phases, you need find the file at your project and remove the reference by DELETE :
3. Add the file to your project again
4. Add the file's .m to your Build Phases-->Compile Sources again
5. Build your project, the error will disappear
Assurez-vous que vous n'avez pas importé un fichier .m par accident. Vous voudrez peut-être supprimer vos données dérivées dans la fenêtre Projets, puis créer et exécuter à nouveau.
Pour quiconque ayant ce problème, je n'ai vu ma résolution dans aucune de ces réponses.
Après avoir eu un conflit de fusion .pbxproj qui a été résolu manuellement (bien que mal), il y avait des références en double à des fichiers de classe individuels dans .pbxproj. Supprimer ceux du projet> Construire les phases> Compiler les sources a tout corrigé pour moi.
J'espère que cela aide quelqu'un en bout de ligne.
Aucune des solutions ci-dessus ne fonctionne pour moi, je viens de le réparer moi-même.
J'ai le symbole en double de mon core data model
que je fabrique moi-même, mais Dans mon inspecteur .xcdatamodeld
, je choisis Class Definition
de la propriété Codegen
, je suppose que c'est ce qui ne va pas. Ensuite, j'ai choisi Manual/None
, cela a été corrigé.
J'espère que cela peut être utile pour vous!
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 Autre indicateur d'éditeur de liens .
3: Suppression de tous mes dériver Data .
je reçois toujours la même erreur. J'ai supprimé cette erreur en supprimant toute déclaration de variable du fichier .pch
. dans mon cas, j'ai déclaré l'objet AppDelegate
dans le fichier .pch
. enfin j'ai trouvé la raison qui cause une erreur. donc je supprime la déclaration de toute variable du fichier .pch et mon charme de travail de projet.
Une autre erreur stupide qui causera cette erreur est des fichiers répétés. J'ai accidentellement copié deux fichiers deux fois. Je suis d'abord allé à Cibles -> Construire les phases -> Compiler les sources. Là, j'ai remarqué deux fois des fichiers sur cette liste et leurs emplacements.
J'ai aussi cette erreur aujourd'hui.C'est parce que j'ai défini une valeur const dans un fichier .m
.Mais j'ai défini un autre fichier .m
qui contenait également cette valeur const.Cela signifie qu'il a deux mêmes valeurs const.So cette erreur apparaît . ma solution ajoute un mot clé "static
" avant la valeur constante, telle que:
static CGFloat const btnConunt = 9;
Et puis je construis le projet, il ne signalera pas cette erreur.
Je fais face à la même erreur que ce que j'ai fait
1.Copiez le fichier de symboles dupliqué (nom de classe ou nom de structure) à partir de la fin indiquée ci-dessus au dessus de la ligne (symboles dupliqués pour l'architecture x86_64).
2. Collez-le dans Find Navigator et appuyez sur enter
Il m'a montré la classe en double. Je supprime la classe en double et cours avec succès.
J'espère que ça va certainement t'aider
J'ai la même erreur 3 symboles en double pour l'architecture x86_64
dans mon cas, j'ai copié le code d'un autre fichier du même projet, par exemple. code du fichier A.m à B.m et après complilation j'ai eu une erreur comme mention. et j'ai résoudre l'erreur en changeant le nom de la variable globale.
cette erreur est arrivée dans mon cas à cause de la même déclaration pour la variable globale dans les deux fichiers.
Le même problème se produit avec moi, lorsque j'intégrais le projet Lob dans mon projet.
En fait, le projet lob contient également les fichiers AFNetworking, Je supprime donc les fichiers .m du projet lob.
En fait, les fichiers .m sont en conflit avec les fichiers My project POd/AFNetworking/.m
Cette erreur se produit généralement lorsque vous avez lié deux fois une bibliothèque ou un fichier. Dans la description d'erreur, le nom du fichier dupliqué sera répertorié. Vous pouvez effectuer une recherche et vous assurer que vous n'avez pas de doublons. Si vous trouvez des doublons, supprimez la référence à l'un d'eux pour jouer en toute sécurité
1. Allez à Build Phases2.Recherchez le nom du fichier 3. Supprimez la copie -> L'erreur disparaîtra.
Si ce n'est pas le cas, essayez de rechercher "fichier.m", si vous voyez un fichier "import", "fichier.m", effacez cette ligne.
Récemment eu un mal de 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:
dispatch_time_t getDispatchTimeByDate(NSDate *date)
{
NSTimeInterval interval;
double second, subsecond;
struct timespec time;
dispatch_time_t milestone;
interval = [date timeIntervalSince1970];
subsecond = modf(interval, &second);
time.tv_sec = second;
time.tv_nsec = subsecond * NSEC_PER_SEC;
milestone = dispatch_walltime(&time, 0);
return milestone;
}
J'espère que cela pourrait aider quelqu'un.
Dans mon cas, deux méthodes main()
ont été définies dans mon projet et la suppression d’une méthode a résolu le problème.
Supprimez -all_load des autres drapeaux de l'éditeur de liens. Ça marche sur mon projet
Assurez-vous de ne pas importer [ViewController.m] à la place du fichier d'en-tête.
#import "ViewController.m"
Cette réponse explique bien pourquoi ce problème se produit:
Xcode C++ :: Symboles en double pour l'architecture x86_64
À mon avis, il n'est pas nécessaire de désactiver les indicateurs, de modifier les paramètres Xcode, de relire votre code et de résoudre le problème. Changer les réglages atténuerait l'inflammation et non la cause.
Pouvez-vous essayer d'effacer tous les plugins dans le dossier des plugins?
C'est travaillé pour moi
Veuillez vérifier auprès du module et des bibliothèques que vous avez ajoutées. Il devrait y avoir une ou plusieurs bibliothèques sont répétés. Veuillez l'enlever d'un côté. Je vais résoudre le problème. Et la bibliothèque concernée sera listée dans le détail du message d'erreur x-code.
Dans mon cas, j'ai nommé une entité de mon modèle de données principal de la même manière qu'un objet . Donc: j'ai défini un objet "Event.h" et, en même temps, j'avais cette entité appelée "Evénement". J'ai fini par renommer l'entité.
Cette erreur m'est arrivée lorsque j'ai implémenté une méthode de classe avec un opérateur de résolution d'étendue dans le fichier entête au lieu de .cpp fichier.
PS: Et je programmais en C++ sur Macbook Yosemite.