2012-08-30 13 views
6

私のプロジェクトではどこでもRestyを使用していますが、今はイメージをサーバーにアップロードする必要があるため、RestKitという名前の別のフレームワークを追加してファイルのアップロードを処理します。私はコンパイル時にしかし、それはエラーを得た:アーキテクチャarmv7のiOS - 2重複シンボル

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

これはリンクの問題を処理します。

RestickコードでNSData + Base64のファイルとカテゴリの名前を変更し、Restyコードが "NSData + Base64.h"をインポートする場所で、名前を変更した名前に変更します

1

問題は、両方のライブラリが同じメソッドNewBase64Decodeを定義していることです。

したがって、いずれかのライブラリのソースコードを変更し、メソッド名を「RKNewBase64Decode」のように変更することができます。 NewBase64Decodeメソッドが呼び出された場所でも、* .mファイルに変更を加えることを忘れないでください!

4

私も同じエラーが発生しました。一般的に、この種のエラーは、プロジェクトフォルダ内のクラスとxibが重複しているために発生します。私のプロジェクトの例では、私はこれらのクラスを2回持っていましたServiceRequest.h/.m。重複したものを取り除き、あなたは行くのが良いです。

1

また、私は愚かに.mをインポートした場合、インポートを削除することに注意しました。既存の(古い)プロジェクトに新しいライブラリをインポートするときに

4

はちょうどこの問題を持っていた - 問題だったリンカフラグ-all_loadだっ判明まだ "ビルド設定で設定した(何らかの理由で) - リンク - その他のリンカフラグ "をXcodeに挿入します。

このフラグを削除した後、すべてうまくいった。

0

これは、プロジェクトにあったのとまったく同じ名前のクラスを含むフレームワークをインポートするときに私に起こりました。

関連する問題