57

ビルド+デバッグを押すと、このエラーが発生しました:

ld: duplicate symbol .objc_class_name_BlogTableItemCell in /Users/fabian/Development/Workspaces/iphone_experiments/xcode_build_output/MausLog.build/Debug-iphonesimulator/MausLog.build/Objects-normal/i386/BlogTableItemCell-3733583914888A7B.o and /Users/fabian/Development/Workspaces/iphone_experiments/xcode_build_output/MausLog.build/Debug-iphonesimulator/MausLog.build/Objects-normal/i386/BlogTableItemCell-3733583914888A7B.o
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1
4

17 に答える 17

176

Xcode の #import ステートメントのオートコンプリートで、'.h' ではなく 'duplicate' クラスの '.m' ファイルを誤って指定した場合にも、このエラーが発生する可能性があります。

于 2011-04-24T20:33:39.337 に答える
64

コードの異なる場所で同じ BlogTableItemCell クラスを 2 回コンパイルしているようです。これは、次の場合に発生する可能性があります。

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

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

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

于 2010-02-15T07:41:16.633 に答える
43

私にとっては、「共通ブロックなし」を「はい」から「いいえ」に変更します(ターゲット->ビルド設定->Apple LLVM - コード生成の下) ここに画像の説明を入力

于 2015-11-21T16:12:37.467 に答える
25

const の定義が不十分なため、同様の問題がありました。ヘッダーに const を定義しました。

int const kCropLocationTop = 1;

これはおそらく複数回インポートされました。修正するために、ヘッダー定義を次のように変更しました。

extern int const kCropLocationTop;

const の割り当てを .m ファイルに移動しました。

int const kCropLocationTop = 1;

私と同じように単純なオブジェクティブ C の概念を知らない人の助けになることを願っています!

于 2012-02-17T02:33:51.857 に答える
18

誤って、ソース ファイルが Project -> Build Phase -> Compile Sources に 2 回含まれていました。それらの1つを削除すると、問題が解決しました。

于 2012-07-04T07:16:03.187 に答える
18

iPhone: 重複シンボル エラー? ユーザー576924による

私のために正しく答えました。ただし、問題のあるグレムリンを見つけるには、この ZSH スニペットを使用します。

grep "import.*\.m" **/*.[hm]

エラーの場所をすぐに教えてくれます。

于 2011-11-03T18:56:56.063 に答える
9

このエラーの最も一般的な理由は、xyz.h ファイルではなく xyz.m ファイルをインポートすることです。インポートに次のようなものが含まれているかどうかを確認します #import "----.m"

于 2013-05-30T05:33:49.710 に答える
4

追加するだけです。Xcode を使用してサブクラス化されたマネージド オブジェクト (コア データ) を生成すると、生成されたファイルが複製されることがあります。私にとっての修正は、生成されたファイルを削除して再生成することでした。

于 2012-08-22T15:27:40.720 に答える
3

私は自分でこの問題に遭遇しました。リストについては、別の可能性があります。

プロジェクト ファイル内のリンク行が重複しています。

誤って行を複製したときに、SVN の更新でこのマージの競合が発生しました。

于 2011-07-07T13:17:17.483 に答える
2

これは誰かを助けるかもしれません

ViewController を複製してから名前を変更したため、このエラーが発生しました。したがって、コンパイルすると、このエラーが発生しました。その理由は、両方のビュー コントローラに、クラス レベルで定義した「float padding=10.0」という同じ名前の「float」変数があったためです。View Controllerの1つで上記の変数の名前を変更すると、問題が解決しました。

于 2016-05-04T09:45:35.020 に答える
1

私もこの問題に直面しました。私の解決策は、他のクラスのものと同じ名前を持つグローバル変数の名前を変更することでした。お役に立てれば

于 2015-08-12T07:56:43.053 に答える
0

ローカライズ可能なxibファイルで遊んでいるときに同じことが起こりました。誤って2つの実装ファイルを作成したため、私の場合は明らかに問題が発生しました。同じミスをせずに実装ファイルを削除・再作成したらエラーが解消されました。

于 2012-09-28T17:09:49.520 に答える
0

場合によっては、いくつかの指示に従って新しいバージョンの Subversion をビルドし、このシンボリック リンクを作成するように指示しました。

ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.10.xctoolchain

今、私は本当にWindowsの男なので、すぐにはわかりませんでしたが、リンクを削除すると修正されました(XCodeを再起動した後):

rm /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.10.xctoolchain

ふぅ。

(私が得た実際のエラーは、ここで説明されているものでした: build error duplicate symbols arclite.o )

于 2016-02-11T11:04:40.240 に答える