6

私は自分のプロジェクトでどこでもRestyを使用していますが、サーバーに画像をアップロードする必要があるため、RestKitという別のフレームワークを追加してファイルのアップロードを処理しようとしています。しかし、コンパイルするとエラーが発生しました:

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 を削除せずにこの問題を解決する方法はありますか (明日がこのプロジェクトの締め切りであるため)。本当にありがとうございました!

4

6 に答える 6

5

新しいライブラリを既存の(古い)プロジェクトにインポートするときにこの問題が発生しました-問題は、Xcodeの「ビルド設定-リンク-その他のリンカーフラグ-all_load」で(何らかの理由で)まだ設定されているリンカーフラグであることがわかりました。

このフラグを削除すると、すべてうまくいきました。

于 2013-08-15T09:38:00.133 に答える
4

私も同じエラーを思いついた。通常、この種のエラーは、プロジェクトフォルダ内のクラスとxibsが重複しているために発生します。たとえば、私のプロジェクトでは、これらのクラスを2回実行しServiceRequest.h/.mました。重複するものを取り除き、あなたは行ってもいいです。

于 2013-02-15T19:55:19.370 に答える
4

これらのファイルをRestyソースから削除します。

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

これでリンクの問題が解決します。

そのために機能しなくなった場合は、RestyコードでNSData + Base64のファイルとカテゴリの名前を変更してから、Restyコードが「NSData + Base64.h」をインポートする場所で、カテゴリの名前を変更したものにインポートを変更します。

于 2012-08-30T15:29:12.280 に答える
1

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

そのため、任意のライブラリのソース コードを変更して、メソッド名を「RKNewBase64Decode」などの別の名前に変更できます。*.m ファイルと NewBase64Decode メソッドが呼び出される場所を変更することを忘れないでください。

于 2012-10-09T05:22:14.613 に答える
0

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

于 2014-07-23T09:01:21.343 に答える