2012-08-30 6 views
6

Ich verwende Resty überall in meinem Projekt, aber jetzt, da ich Image auf den Server hochladen muss, so versuche ich ein anderes Framework namens RestKit hinzufügen, um Datei-Upload zu behandeln. Aber wenn ich zusammengestellt, es erhielt Fehler:iOS - 2 doppelte Symbole für Architektur armv7

duplicate symbol _NewBase64Decode in: 
    /Users/iforests/Library/Developer/Xcode/DerivedData/Owlch-gnysrakcbhsgkubbjjjfbahlocqi/Build/Products/Debug-iphoneos/libRestKit.a(NSData+Base64.o) 
    /Users/iforests/Documents/iOSworkspace/Owlch/LRResty.framework/LRResty(NSData+Base64.o) 
ld: 2 duplicate symbols for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Gibt es eine Möglichkeit, dieses Problem zu lösen, ohne LRResty zu entfernen (da morgen ist die Frist des Projektes). Vielen Dank euch allen!

+0

Zum Vorteil für andere: Ich hatte diesen Fehler nach dem Löschen einiger Klassen, die ich nicht mehr brauchte. Ich musste einen Clean machen, bevor ich wieder erfolgreich kompilieren konnte. – Eric

+0

Versuchen Sie Folgendes: http://stackoverflow.com/a/42089897/3024579 – Alok

Antwort

4

Löschen Sie diese Dateien aus der Resty-Quelle.

LRResty/Classes/Categories/NSData+Base64.h LRResty/Classes/Categories/NSData+Base64.m

Das wird sich um das Verknüpfungsproblem kümmern.

Wenn es aus diesem Grund nicht mehr funktioniert, benennen Sie die Dateien und die Kategorie für NSData + Base64 in den Resty-Code um und ändern Sie den Import an jeder Stelle, an der der Resty-Code "NSData + Base64.h" importiert, in die Kategorie

1

Das Problem ist, dass beide Bibliotheken die gleiche Methode definieren: NewBase64Decode.

So können Sie den Quellcode einer beliebigen Bibliothek ändern und den Methodennamen in etwas anderes wie "RKNewBase64Decode" ändern. Denken Sie daran, Änderungen an der * .m-Datei auch dort vorzunehmen, wo die NewBase64Decode-Methode aufgerufen wird!

4

Ich kam auch mit dem gleichen Fehler. Im Allgemeinen tritt diese Art von Fehler aufgrund von doppelten Klassen und XIBs im Projektordner auf. Zum Beispiel in meinem Projekt hatte ich diese Klassen zweimal ServiceRequest.h/.m. Duplikate loswerden und du bist gut zu gehen.

1

Auch habe ich festgestellt, wenn Sie eine .m dumm importiert haben, entfernen Sie den Import.

4

Genau dieses Problem hatte, als eine neue Bibliothek in eine bestehende (alte) Projekt importieren - stellt sich heraus, das Problem der Linker-Flag -all_load war, das war (warum auch immer) noch in den "Build-Einstellungen festgelegt - Linking - andere Linkers Fahnen "in Xcode.

Nach dem Entfernen dieser Flagge ging alles gut.

0

Dies kam mir beim Importieren eines Frameworks vor, das eine Klasse mit dem exakt gleichen Namen wie im Projekt enthielt.