2012-08-30 13 views
6

Używam Resty wszędzie w moim projekcie, ale teraz, ponieważ muszę przesłać obraz na serwer, więc próbuję dodać kolejną strukturę o nazwie RestKit do obsługi przesyłania plików. Ale kiedy skompilowane, zrobiło błąd:iOS - 2 duplikaty symboli architektury 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) 

Czy istnieje jakiś sposób, aby rozwiązać ten problem bez usuwania LRResty (ponieważ jutro jest termin tego projektu). Bardzo dziękuje Wam wszystkim!

+0

Dla korzyści innych: Miałem ten błąd po usunięciu niektórych zajęć, których już nie potrzebowałem. Musiałem zrobić Clean, zanim będę mógł z powodzeniem ponownie skompilować. – Eric

+0

Spróbuj tego: http://stackoverflow.com/a/42089897/3024579 – Alok

Odpowiedz

4

Usuń te pliki ze źródła odpoczynku.

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

To zajmie się problemem z łączeniem.

Jeśli z tego powodu przestanie działać, zmień nazwy plików i kategorii dla NSData + Base64 w kodzie restycyjnym, a następnie w dowolnym miejscu przywracanego kodu importuj "NSData + Base64.h", zmień import na cokolwiek zmień nazwę kategorii

1

Problem polega na tym, że obie biblioteki definiują tę samą metodę: NewBase64Decode.

Można zatem zmodyfikować kod źródłowy dowolnej biblioteki i zmienić nazwę metody na inną, np. "RKNewBase64Decode". Pamiętaj, aby wprowadzać zmiany w pliku * .m także tam, gdzie jest wywoływana metoda NewBase64Decode!

4

Też wymyśliłem ten sam błąd. Zwykle ten rodzaj błędu występuje z powodu duplikowania klas i plików XIB w folderze projektu. Na przykład w moim projekcie miałem te klasy dwa razy: ServiceRequest.h/.m. Pozbądź się duplikatów i jesteś gotowy.

1

Ponadto, zauważyłem, jeśli głupio zaimportowano .m, usuń import.

4

Po prostu pojawił się ten problem podczas importowania nowej biblioteki do istniejącego (starego) projektu - okazało się, że problemem była flaga łącznika -all_load, która była (z jakiegokolwiek powodu) nadal ustawiona w "Ustawienia kompilacji - Łączenie - Inne Łącznik Flagi "w Xcode.

Po usunięciu tej flagi wszystko poszło dobrze.

0

To przyszło mi do głowy podczas importowania frameworka zawierającego klasę o dokładnie takiej samej nazwie jak w projekcie.

Powiązane problemy