2010-07-26 6 views
5

Haben Sie eine Idee? Warum XCode Kompilation dieses Ergebnis geben?Doppelte Symbol XCode-Bibliothek für dieselbe Bibliothek?

ld: duplicate symbol _kJSONDeserializerErrorDomain in 
    /Users/Shared/_BUILDS_/Debug-iphoneos/libLACDLibrary.a(CJSONDeserializer.o) 
    and /Users/Shared/_BUILDS_/Debug-iphoneos/libLACDLibrary.a(CJSONDeserializer.o) 

Antwort

1

Hey, Sie haben wahrscheinlich eine doppelte Referenz in XCode zu CJSONDeserializer, so dass es zweimal kompiliert und verknüpft ist.

6

Ich habe genau das gleiche Problem. Und es beschwert sich nur für Arm6 Build (nicht Arm7 Build). Ich habe eine Problemumgehung gefunden: Entfernen Sie "-all_load" in Andere Linker-Flag unter Build < -Get Info < -Ziel. Ich bin mir nicht sicher, ob es sich um eine korrekte Problemumgehung handelt. Ich hoffe, dass jemand weiter erklären kann und die richtige Problemumgehung bietet, wenn dies nicht der Fall ist.

6

Dieser Fehler tritt auf, wenn Sie dieselbe Bibliothek mehrere Male in Ihr Projekt einbinden.

Projektabhängigkeiten unterscheiden sich subtil von der Verknüpfung der Bibliotheken. Es ist in Ordnung, wenn mehrere Projekte von demselben Projekt X der gemeinsam genutzten Bibliothek abhängen; Stellen Sie jedoch sicher, dass nur eine der Projekte die Bibliothek tatsächlich verbindet.

+0

+ 1 für den Unterschied zwischen Link und Abhängigkeit – lms

0

Ich traf dieses Problem mit Code wie die in einer Datei Common.h genannt Folgendes:

void dumpViews(UIView* view, NSString *text, NSString *indent) { 
    // ... 
} 

Durch statische Zugabe vor der Methodendefinition es das Problem sich für mich klären:

static void dumpViews(UIView* view, NSString *text, NSString *indent) { 
    // ... 
} 
+0

Ok, es ist eine lange Zeit, und ich erinnere mich nicht an die Problemumgehung, die ich dafür gefunden habe, aber das Problem war Kin die gleiche, oder auf einer Projektebene erinnere mich nicht. Danke für den Hinweis – Vaseltior