2012-08-30 80 views
6

我在我的項目中隨處可見使用Resty,但現在因爲必須將映像上載到服務器,所以我嘗試添加另一個名爲RestKit的架構來處理文件上載。但是,當我編譯,它得到了錯誤:iOS - 2架構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) 

有什麼辦法來解決這個問題,而不刪除LRResty(因爲明天是這個項目的最後期限)。非常感謝你!

+0

爲了其他人的利益:刪除了一些我不再需要的類後,出現此錯誤。在能夠再次成功編譯之前,我必須先執行Clean。 – Eric

+0

試試這個:http://stackoverflow.com/a/42089897/3024579 – Alok

回答

4

從Resty源中刪除這些文件。

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

這將處理鏈接問題。

如果因此停止工作,請在Resty代碼中重命名NSData + Base64的文件和類別,然後在Resty代碼導入「NSData + Base64.h」的任何位置更改導入,以將其重命名爲

1

問題是兩個庫都定義了相同的方法:NewBase64Decode。

因此,您可以修改任何一個庫的源代碼,並將方法名更改爲「RKNewBase64Decode」之類的其他名稱。記住要在* .m文件中進行更改,以及在任何調用NewBase64Decode方法的地方進行更改!

4

我也想出了同樣的錯誤。通常這種錯誤是由於項目文件夾中重複的類和xibs。例如在我的項目中,我有這些類兩次ServiceRequest.h/.m。擺脫重複的,你很好去。

1

此外,我已經注意到,如果你愚蠢地導入.m,刪除導入。

4

剛把這個問題導入到一個已存在的(舊)項目中時 - 原來問題是鏈接器標記-all_load(無論什麼原因)仍然在「構建設置 - 鏈接 - 其他鏈接器標誌「在Xcode。

刪除此標誌後,一切正常。

0

導入包含與項目中的名稱完全相同的類的框架時,發生了這種情況。