1

プロジェクトをコンパイルすると、次のエラーが発生します。

ld: duplicate symbol _OBJC_CLASS_$_DNCloseButton in /Users/.../Library/Developer/Xcode/DerivedData/...Objects-normal/i386/DNCloseButton-7045D069F03DAA13.o for architecture i386
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang++ failed with exit code 1

問題がクラスに関するものであることは知っていDNCloseButtonますが、解決方法がわかりません。回答ありがとうございます。

4

4 に答える 4

7

#importインターフェイスをヘッダー ファイル (.h) で 1 回だけ宣言し、そのヘッダー ファイルを withではなくでインポートしたことを確認します#include

XCode が少しコックアップして、リンカーの段階で同じファイルを 2 回リンクすることがあります。これをフィッティングするには:

  • プロジェクトからファイルを削除し (「参照の削除」オプションを選択)、再度追加します。
  • shift-cmd-k でクリーンアップ
  • 建てる

お役に立てれば!

于 2012-04-26T10:23:27.667 に答える
6

これは、コンパイル ソース ビルド フェーズでソース ファイルが 2 回インクルードされた場合に発生します。

Xcode 4 でこれを確認するには:

  • ファイル リストからプロジェクトを選択します。
  • 左の列からターゲットを選択します。
  • トップバーの Build Phases タブをクリックします。
  • 検索フィールドに、リンカー エラーの原因となっているクラスの名前を入力します。上記の質問の場合は、DNCloseButton です (前の _ は無視してください)。

クラスのソース ファイルが [コンパイル ソース] リストに 2 回表示される場合は、エントリの 1 つを削除します。

于 2012-08-23T23:50:06.513 に答える
5

#import誤って.mファイルではなくファイルを使用した場合にも、このエラーが発生する可能性があり.hます。

于 2012-12-17T11:33:23.893 に答える
1

これは、次の場合に発生する可能性があります。

同じクラスの実装を 2 つの異なるファイルに入れました。

実際には、このクラスの実装は 1 つしかありませんが、プロジェクト内で、名前がまったく同じ名前のクラスを含むフレームワークまたはライブラリもリンクしています。

プロジェクト全体でクラスを見つけて、プロジェクト内で使用できるコピーが 1 つだけであることを確認してください。

于 2012-04-26T09:59:26.960 に答える