Xcode dupliquer le symbole _main
J'obtiens l'erreur suivante dans Xcode 3.2.1 sur Snow Leopard 10.6.2 chaque fois que j'essaie de compiler n'importe quel iPhone application générés par Appcelerator Titanium. Cependant, l'accumulation d'erreur ne s'affiche que lorsque je sélectionne simulateur d'iPhone sur l'architecture de menu et si je sélectionne le dispositif de l'iPhone, je suis en mesure d'exécuter l'application sur mon appareil .
De plus, le simulateur d'iPhone, lance avec succès et exécute le programme directement à partir du Titane, de l'environnement qui utilise Xcode pour construire .
Pourquoi est-ce arrivé ?
ld: duplicate symbol _main in Resources/libTitanium.a(main.o) and /Users/prithviraj/Documents/project/Final/build/iphone/build/Final.build/Debug-iphonesimulator/Final.build/Objects-normal/i386/main.o
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1
OriginalL'auteur Prithvi Raj | 2010-03-29
Vous devez vous connecter pour publier un commentaire.
Je ne peux pas vous dire pourquoi ce qui se passe, mais je peux vous proposer une solution de contournement. Quand j'ai commenté tout le contenu de la principale.m fichier qui a été généré pour mon projet de Titane, j'ai été en mesure de compiler et exécuter avec succès sur le Simulateur. Laissez-moi savoir si cela fonctionne pour vous.
main
point d'entrée et c'est donc redondant à lamain
fonction dans le main.m. Je ne sais pas pourquoi ce problème n'a pas de rogner ailleurs, mais ça doit être quelque chose avec la manière dont le compilateur est invoquée par le Titane, pour accrocher dans leur point d'entrée à la place de celui dans la main.m.Merci warren , Ça fonctionne 🙂
Dans mon cas, une bibliothèque, je suis avec eu c'est le principal.m. Commentée et cela a fonctionné
Alors que cela fonctionne, je pense que c'est la bonne façon de gérer cela: stackoverflow.com/questions/3380972/xcode-duplicate-symbol-main
Pas de désaccord de moi. Je suppose que j'avais moins d'expérience avec les Phases de construction de l'année dernière, ce qui explique comment j'ai négligé la solution la plus évidente.
OriginalL'auteur warrenm
Vérifier pour voir si vous avez de multiples déclarations de la fonction principale de votre projet.
OriginalL'auteur Vishal Jaiswal
J'ai juste passé quelques heures de combat contre cette un. C'était parce que j'étais à l'aide de l'-all_load de l'éditeur de liens drapeau. Si vous utilisez ce drapeau pour obtenir autour de la catégorie de bug, il y a d'autres solutions, voir ici.
Ce fut la cause dans notre projet. C'était un ancien projet où -all_load a été utilisé et nous venons liés d'une nouvelle bibliothèque. Le résultat a été plus de 200 duplications. Retrait -all_load fixe.
Je vous aime. merci
Étrange, mais en enlevant les -all_load a fonctionné pour moi aussi!
OriginalL'auteur William Jockusch
J'ai eu un problème similaire. Une unité de la classe de test a été accidentellement inclus dans mon construire. Si vous recherchez votre projet pour "principal(" vous trouverez probablement les doublons de fonctions.
Des heures! j'ai passé des heures!. Encore une fois, merci pour la mention principale.c
OriginalL'auteur gstroup
Ce qui m'est arrivé pour 2 raisons:
1: Classe les appels de classe B et les deux avaient importé de la même classe. Le fixer par l'importation de la classe .m fichier.
2: Deux classes ont une constante avec le même nom (même si la constante est définie dans la .m de fichier). Réparer en changeant le nom de la constante.
OriginalL'auteur Arthur Rocha de Menezes
Semble qu'il y a plusieurs façons d'entrer dans cet état. Le mien était différent. J'ai lu un indice où vous pourriez faire glisser à partir d'un .xib événement sélecteur dans le .h la mise en œuvre de votre vue-contrôleur et il serait auto-gen vos méthodes. Il n' - ce qui était cool. J'ai immédiatement commencé à se dupliquer le symbole des erreurs - ce qui n'était pas cool.
Je n'ai pas eu le temps de creuser profondément dans l'éditeur de liens pour voir ce qui s'est passé. J'ai créé un nouveau point de vue contrôleur, copié le cadre de mon vieux .xib dans le nouveau mec. Supprimé les anciennes .h, .m et .xib et construit et il a de nouveau fonctionné. Très étrange, très ennuyeux des pertes de temps.
Visiblement il y a un bug avec ce xcode "commodité".
OriginalL'auteur Doug Squires
J'ai trouvé ce qui s'est passé quand j'avais un fichier de mise en oeuvre avec une fonction principale (dire abc.m) et a également eu un autre
main.m
. Une fois que j'ai commenté la fonction principale dansabc.m
, le projet compilé avec succès.OriginalL'auteur Sri
Basé sur ce que je peux dire de ces autres réponses, je vais avoir besoin de supprimer un tas de
main
méthodes.Mais pour le faire facilement je dois d'abord supprimer toutes les gd commentaires de mes fichiers, car ils sont assidûment documenté avec des commentaires à presque tous les autres la ligne
Cette expression régulière correspond à tous les C les commentaires multi-lignes, y compris leurs délimiteurs & peut vous aider sur votre chemin
OriginalL'auteur boulder_ruby
J'ai eu ce problème parce que j'définir un fichier en tant que tel:
Et a également eu un fichier principal.m:
OriginalL'auteur helsont
J'ai passé plus d'une heure dans la recherche d'une réponse correcte, mais rien n'a fonctionné pour moi.
Enfin xcode il soi disant quelque chose est dupliqué, donc aller dans ce dossier particulier(dans ce cas: /Users/prithviraj/Documents/project/Final/build/iphone/build/Final.build/Debug-iphonesimulator/Final.build/Objects-normal/i386/main.o) et de supprimer tous les fichiers et également de vérifier dans votre projet si particulier de la classe/l'interface est déclarée deux fois si oui de le supprimer.
Après la suppression propre et exécuter le projet.
Il a travaillé pour moi, espérons que cette aide(-_-).
OriginalL'auteur Venuu Munnuruu
Supprimer
/Users/{username}/Library/Developer/Xcode/DerivedData
dossier et de construire à nouveau.OriginalL'auteur erdemildiz