2009-08-18 13 views
2

私のプロジェクトはうまくいっていましたが、今日は私のプロジェクトにadmobライブラリを追加しましたが、今はコンパイルされません!ここでコンパイル時にiPhone SDKプロジェクトに奇妙な重複シンボルがありますか?

は誤りです:

ld: duplicate symbol .objc_category_name_NSCharacterSet_NSCharacterSet_Extensions in /Photo/libAdMobSimulator.a(NSCharacterSet_Extensions.o) and /Photo/build/Photo.build/Debug-iphonesimulator/Photo.build/Objects-normal/i386/NSCharacterSet_Extensions.o 

修正する方法は?

答えて

1

あなたは写真(アプリ/バンドル)の両方でlibAdMobSimulatorにし、あなたのコードで定義されNSCharacterSet上のカテゴリNSCharacterSet_Extensionsを持って

あなたは、カテゴリ名はすなわち、これらのカテゴリの1の名前を変更一意であることを確認する必要があります。

0

#importではなく#includeをヘッダファイルに使用しましたか?私はこの場合に適用されるかどうかはわかりませんが、それは重複するシンボルを取得する1つの方法です。

2

フォローアップノートと同じように、私は人気のあるtouchjsonライブラリを含めてこのエラーが発生しました。 admobライブラリには独自のコピーが付属しています。これが私にとっての衝突の原因です。あなたのプロジェクトからあなたのコピーを削除してください。

0

自分が作成したカテゴリで.hと.mファイルを切り替えるという間違いを犯したときに、このエラーが発生しました。これは誰かが同じことをするのを助けることを願っています:)

2

私は同じ理由で同じ問題を抱えていました。

ObjCおよび-all_loadは、TARGETの「その他のリンカフラグ」に含める必要があります。同じ問題がある場合は、カテゴリが正常にリンクされている間に、アプリが「重複した記号」のために作成されないため、そのことを知ることができます。

Dang。

しかし、待って - JDEEが指摘するように:

i got this error as I had included the popular touchjson library. the admob library comes with its own copy

をそして、あなたが含まTouchJSONのコピーを削除すると問題まで実に明確でありません。

まだ...これは理想的ではありません。私はそこにあるTouchJSONのバージョンが良いとは確信していますが、将来的に更新できるようにしたいと思っています。

This guyは、別の解決策を見つけましたが、TouchJSONから使用するすべての名前の変更が必要です。理想的ではない。

私は今、失恋していますが、幸いなことに急いで修正することはできません。それでも、もしあなたが人気のある静的ライブラリの開発者であれば、この種の葛藤を避ける方法は、あなたの怪獣の脳から聞くのがいいでしょう。

私はその件について別の質問をしています。これらの部分についていくらか感覚ができるかどうかを見てください。

UPDATE:

プロジェクトでTouchJSONのコピーからヘッダファイルを残します。実装ファイルを削除すると、オブジェクトファイルが作成されず、競合が発生しなくなります。これに関する最後のヒントのためにthis post about a similar conflict involving cocos2dに感謝します。

関連する問題