Xcode duplizieren-symbol _main
Ich bin immer der folgende Fehler in Xcode 3.2.1 auf Snow Leopard 10.6.2 immer wenn ich versuche zu kompilieren jede iPhone-Anwendung generiert, die von Appcelerator Titanium. Aber die build-Fehler erscheint nur wenn ich die Option iPhone-simulator auf der Architektur-Menü und wenn ich wählen Sie die iPhone-Gerät, ich bin in der Lage zu führen Sie die app auf meinem Gerät .
Weiter mehr, den iPhone simulator startet erfolgreich aus und führt das Programm direkt aus dem Titan-Umgebung, die verwendet Xcode zu bauen .
Warum ist das passiert ?
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
InformationsquelleAutor Prithvi Raj | 2010-03-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann ich dir nicht sagen, warum dies geschieht, aber ich kann empfehlen ein workaround. Wenn ich auskommentiert, den gesamten Inhalt der main.m-Datei, die generiert wurde, für mein Titan-Projekt, ich war in der Lage, erfolgreich kompiliert und ausgeführt werden auf dem Simulator. Lassen Sie mich wissen, ob das funktioniert für Sie.
main
Eintrag Punkt, und dieser ist daher redundant zumain
Funktion in main.m. Ich bin nicht sicher, warum dieses problem nicht mehr auftauchen anderswo, aber es muss etwas mit der Art, wie der compiler aufgerufen wird, indem Titan, um hook in Ihrem Eintrag Punkt, anstatt das man in main.m.Danke warren , Es funktioniert 🙂
In meinem Fall, eine Bibliothek, die ich verwende, hatte er das eigene Haupt.m. Auskommentiert und es funktionierte
Während es funktioniert, ich denke, das ist der richtige Weg, dies zu behandeln: stackoverflow.com/questions/3380972/xcode-duplicate-symbol-main
Kein Widerspruch von mir. Ich glaube, ich hatte weniger Erfahrung mit Build-Phasen im letzten Jahr, die erklärt, wie ich übersehen die offensichtliche Lösung.
InformationsquelleAutor warrenm
Überprüfen, um zu sehen, wenn Sie mehrere Deklarationen der main-Funktion in Ihr Projekt ein.
InformationsquelleAutor Vishal Jaiswal
Ich verbrachte ein paar Stunden kämpfen diese. Es war, weil ich mit dem -all_load linker Flagge. Wenn Sie mit dieser Flagge, um rund um die Kategorie bug, es gibt einige andere Lösungen-siehe hier.
Dies war die Ursache in unserem Projekt. Es war ein älteres Projekt, wo -all_load verwendet wurde, und wir haben gerade im Zusammenhang einer neuen Bibliothek. Das Resultat war über 200 Duplikationen. Entfernen -all_load es behoben.
Ich Liebe Sie. Dank
Seltsam, aber die entfernen -all_load hat bei mir auch!
InformationsquelleAutor William Jockusch
Ich hatte ein ähnliches problem. Ein unit-test-Klasse wurde versehentlich eingeschlossen in meinem build. Wenn Sie suchen, Ihr Projekt für "main(" Sie werden wahrscheinlich feststellen, die doppelten Funktionen.
Stunden! ich verbrachte Stunden!. Wieder einmal, Dank für die Erwähnung main.c
InformationsquelleAutor gstroup
Mir das passiert aus 2 Gründen:
1: Klasse-A-Aufrufe der Klasse B und beide waren importiert in die gleiche Klasse. Fixieren Sie es durch den Import der Klasse .m-Datei.
2: Zwei-Klassen haben eine Konstante mit dem gleichen Namen (auch wenn die Konstante definiert ist .m-Datei). Fixieren Sie es, indem Sie den Namen der Konstanten.
InformationsquelleAutor Arthur Rocha de Menezes
Scheint, als ob es mehrere Wege, um in diesem Zustand. Mir war das anders. Ich lese einen Tipp, wo man ziehen konnte aus .xib-Ereignis-Selektor in der .h Implementierung der view-controller und es würde auto-gen Ihre Methoden. Sie haben - das war cool. Ich habe sofort angefangen, sich zu duplizieren-symbol Fehler - das war nicht cool.
Habe ich nicht die Zeit haben, um tief in den linker um zu sehen, was passiert. Ich habe eine neue view-controller, kopiert den Rahmen meiner alten .xib in den neuen Kerl. Gelöscht werden die alten .h, .m und .xib und gebaut und es funktionierte wieder. Sehr merkwürdig, sehr ärgerlich Zeit zu verschwenden.
Offensichtlich gibt es einige Fehler, die mit diesem xcode "Bequemlichkeit".
InformationsquelleAutor Doug Squires
Fand ich diese passiert hatte, wenn ich eine Implementierung-Datei mit einer main-Funktion in es (sagen wir das abc.m) und hatte auch eine andere
main.m
. Einmal sagte ich aus der main-Funktion inabc.m
das Projekt erfolgreich kompiliert wurde.InformationsquelleAutor Sri
Basierend darauf, was ich sagen kann, von diesen anderen Antworten, ich bin gehen zu müssen, zu entfernen, eine Reihe von
main
Methoden.Aber zu tun, dass einfach ich muss zuerst entfernen Sie alle gd Kommentare von meinen Dateien, denn Sie sind emsig dokumentiert und mit Kommentaren auf fast jede andere Linie
Dieser reguläre Ausdruck passt auf alle C multi-line Kommentare, einschließlich Ihrer delimeters & kann Hilfe Sie auf Ihrer Reise
InformationsquelleAutor boulder_ruby
Hatte ich dieses problem nicht, da ich eine Datei definieren als solche:
Und hatte auch ein file main.m:
InformationsquelleAutor helsont
Verbrachte ich mehr als eine Stunde auf der Suche nach einer richtigen Antwort, aber nichts für mich gearbeitet.
Schließlich die xcode-Sie selbst sagen, etwas ist doppelt vorhanden, so gehen Sie auf diesen Ordner(in diesem Fall: /Users/prithviraj/Documents/project/Final/build/iphone/build/Final.build/Debug-iphonesimulator/Final.build/Objects-normal/i386/main.o) und löschen Sie alle Dateien, und überprüfen Sie auch gleich in deinem Projekt, ob die bestimmte Klasse/interface deklariert wird, zweimal, wenn ja löschen.
Nach Löschung sauber und das Projekt auszuführen.
War für mich hoffe, das hilft(-_-).
InformationsquelleAutor Venuu Munnuruu
Löschen
/Users/{username}/Library/Developer/Xcode/DerivedData
Ordner und wieder aufzubauen.InformationsquelleAutor erdemildiz