dupliquer le symbole _OBJC_METACLASS_$_ClassName
Je suis en train de lancer mon cocos2d application et face à cette erreur, j'ai récemment mis à jour ma sdk 4.2 et mon cocos2d à 0.99.5.
J'ai essayé de nettoyer mon projet même de changer la Cible de Déploiement ios, mais l'erreur reste la même. Également renommer le nom de la classe aswell afin d'éviter la duplication de la Bibliothèque de classes de noms de cocos2d.
ld: dupliquer le symbole _OBJC_METACLASS_$_MenuSceneNew dans
/Utilisateurs/umaidsaleem/Desktop/functionalityTest/build/Debug-iphonesimulator/libcocos2d
des bibliothèques.un(MenuScene.o) et
/Users/umaidsaleem/Desktop/functionalityTest/build/functionalityTest.build/Debug-iphonesimulator/functionalityTest.build/Objects-normal/i386/MenuScene.o
Vous devez vous connecter pour publier un commentaire.
Vous liez le fichier MenuScene.m deux fois. Vous semblez l'avoir dans une bibliothèque statique, et aussi dans votre application principale.
liba
fait un appel à une fonction danslibb
, vous devez vous assurer quelibb
apparaît dans la ligne de commande liens aprèsliba
.Une autre chose assez simple à faire est de vérifier que vous n'avez pas accidentellement
#import
un.m
fichier au lieu d'un.h
fichier d'en-tête.Qui m'est arrivé.
Une autre raison à cela, pour ceux là qui ont fait de même, comme je viens de le faire, peut-être que vous re-créé une classe d'objets gérés. En faisant cela et en choisissant un autre groupe dans la structure de projet, vous créez accidentellement une autre référence sur les mêmes fichiers.
J'ai fini avec deux références pour l'en-tête et la mise en œuvre à la fois la racine du projet et dans mon groupe de modèle. Retrait le plus haut des références .h et .m les fichiers se débarrasser de la liaison de l'échec.
Parfois de Base de Données inserts AnyProjectNameModel.xcdatamodeld à la Compilation des Sources de l'Phases de construction. Le vérifier et de le supprimer et de tout ce qui est exécuté à nouveau...
Le message d'erreur indique simplement la générées ManagedObjects...
Le bon endroit pour le AnyProjectNameModel.xcdatamodeld est la Copie Bundle de ressources dans les Phases de construction.
Vérifier le Compiler les Sources de votre cible et de voir si une classe.m fichier est inclus deux fois
Une erreur stupide que j'ai faite est que j'ai nommé mon
@implementation
le même que celui de mon super-classe.Dans le
.h
Dans le
.m
Aucun des régulièrement des suggestions de google semblait aider, donc si quelqu'un est fou ou fatigué que je suis (peut-être un bon mélange des deux), assurez-vous que vous n'avez pas dupliqué un
@implementation
!Dans mon cas ce qui se passait à cause de Xcode génération automatique de mon NSManagedObject classe, qui ensuite se sont affrontés avec mon créées manuellement NSManagedObject classe. Dans ce cas, vous pouvez configurer Codegen" à "Manuel/None" dans le Modèle de Données de l'Inspecteur pour votre Entité nouvellement créée.
Pour moi, la suppression -all_load à partir de l'éditeur de liens Drapeaux résolu le problème.
J'ai également eu cette erreur se produit lorsqu'un fichier qui n'a pas été ajouté au projet, est référencé quelque part dans le projet. Les deux cas où j'ai vécu cette sont où j'ai supprimé/fichiers supprimés à partir du projet sans la suppression des références à eux, et lorsqu'ils travaillent en collaboration sur un projet où un coéquipier ajouté la référence, mais je n'ai pas ajouté le fichier à ma version du projet.
Je sais que l'OP a résolu leur problème, mais j'ai senti cela pourrait aider quelqu'un d'autre qui lit cette question lors de la recherche de l'aide.
Une autre chose à vérifier pour la double liaison - il est possible d'avoir le même fichier dans deux endroits différents dans la liste des fichiers sur la gauche. Ensuite, le compilateur compile et les liens deux fois.
Ce qui se passe lors de la lecture avec l'organisation de votre hiérarchie de fichiers, par exemple.
Vous n'avez pas à faire une bibliothèque ou quelque chose de compliqué - il suffit de glisser une .m à deux endroits différents dans l'arborescence du projet.
Rappelez-vous de ne retirer que la référence à l'un d'entre eux, aucun fichier bousiller est nécessaire.
J'ai trouvé la solution moi-même, désolé pour l'affichage de peu de retard. Toute aide est très appréciée des mais le problème se pose lorsque je ajouter de nouvelles CCLayer de la classe dérivée et coche cocos2d 0.99.5 statique de la bibliothèque, ce qui était faux. Puis, j'ai lu ma classe sans vérifier et nettoyer mes cibles et ensuite construire et aller de l'. Problème résolu maintenant.
J'avais un projet avec 2 objectifs. Une cible nommée Composant et le second Échantillon. L'échantillon a été à l'aide de composant comme une bibliothèque de liens.
Ensuite, le Composant a à l'aide d'un pod nommé MyPod (installé avec cocoapod).
La Podfile a été écrit comme ceci :
Les deux cibles faisait référence à la partagé de liste du conteneur. Lors de la construction du Composant cible, pas de problème, mais lors de la construction de l'échantillon-je obtenir un duplicata symbole _OBJC_METACLASS_$_ClassName.
J'ai changé le Podfile à :
Et qui permettent de résoudre le problème.
3 heures passées, l'espoir de sauver quelqu'un moment.
XCode Beta s'est écrasé pour moi lors de la suppression d'une référence à une classe. Ce qui a causé le problème décrit dans la réponse, la solution était encore différent.
Dans mon Objectif de la Phase de construction, en vertu de la Compilation des Sources", le point de me donner le chagrin était rouge. Je ne pouvais pas le supprimer avec le bouton moins, mais en tapant "sauter" dans les options du compilateur causé la classe rouge à disparaître après avoir rechargé le projet. Je suis en supposant que vous pouvez taper n'importe quoi dans n'.
Il m'a fallu deux heures pour trouver la solution à mon problème, je l'ai mis ici pour une autre option pour les personnes ayant ce problème, même si elle est probablement ne va pas être une commune.
Aucune réponse n'a fonctionné pour moi, donc je l'ai supprimer les fichiers du projet et de choisir seulement Supprimer les Références.
Puis j'ai ajouté les mêmes fichiers, et cela a fonctionné.
Qui fixe mon erreur. Peut-être XCode ai perdu les références stockées quelque part, parce que le projet est multi-collaboration.
Espère que ça aide quelqu'un.
Une autre possibilité pour l'erreur, comme ce est quand il ya un nom de classe de collision. Soit 2 classes avec le même nom au sein de votre projet, ou de la classe de votre projet de en conflit avec celle qui est définie dans certaines bibliothèques de dépendances.
Supprimer cible à partir du panneau de droite et de nouveau à ajouter une cible. Cela permettra d'éliminer tous les doublons de références.
Il peut arriver si 2 programmeur d'ajouter la même cible et valider le fichier de projet.
Dans mon cas, j'ai été en utilisant un binaire de la bibliothèque comprend le même nom de classe, j'ai été à l'aide de l'extérieur,
Alors, j'ai changé mon nom de la classe et Ça fonctionne 🙂