Build + debugを押すと、次のエラーが表示されます。
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
コードの異なる場所で同じBlogTableItemCellクラスを2回コンパイルしているようです。これは、次の場合に発生する可能性があります。
同じクラス実装を2つの異なるファイルに配置しました。
実際には、このクラスの実装は1つだけですが、プロジェクト内で、名前がまったく同じクラスを含むフレームワークまたはライブラリもリンクしています。
プロジェクト全体でクラスを見つけて、プロジェクト内で使用できるコピーが1つだけであることを確認してください。
また、誤って#importステートメントのXcodeのオートコンプリートに「.h」ではなく「duplicate」クラスの「.m」ファイルを指定させた場合にも、このエラーが発生する可能性があります。
私にとっては、「共通ブロックなし」を「はい」から「いいえ」に変更します(「ターゲット」->「ビルド設定」->「Apple LLVM-コード生成」の下)
Constの定義が不十分なため、同様の問題が発生しました。私はヘッダーにconstを定義していました:
int const kCropLocationTop = 1;
これはおそらく複数回インポートされました。修正するには、ヘッダー定義を次のように変更しました。
extern int const kCropLocationTop;
constの割り当てを.mファイルに移動しました。
int const kCropLocationTop = 1;
私と同じように単純なObjective Cの概念を知らない人に役立つことを願っています!
誤って、ソースファイルがプロジェクト->ビルドフェーズ->ソースのコンパイルに2回含まれていました。それらのいずれかを削除することで問題が解決しました。
iPhone:シンボルの重複エラー? by user576924
私に正解した。ただし、問題のグレムリンを見つけるには、このZSHスニペットを使用します。
grep "import.*\.m" **/*.[hm]
エラーがどこにあるかすぐにわかります。
このエラーの最も一般的な理由は、xyz.hファイルの代わりにxyz.mファイルをインポートすることです。インポートに#import "----.m"
などが含まれているかどうかを確認します
追加するだけです。 Xcodeを使用してサブクラス化された管理対象オブジェクト(コアデータ)を生成すると、生成されたファイルが複製される場合があります。私にとっての修正は、生成されたファイルを削除して再生成することでした。
私は自分でこの問題に遭遇しました。リストについては、別の可能性があります。
プロジェクトファイルのリンク行が重複しています。
誤って行を複製したときに、SVN更新でこのマージ競合が発生しました。
別の考えられる原因をリストに追加しています...実装ファイルに、実装の外部に、同じ名前で複数の定数を誤って作成した可能性があります。
HeaderFileOne.mで
NSString * const kCoolConstant = @"cool";
HeaderFileTwo.mで
NSString * const kCoolConstant = @"cool";
したがって、これらの定数名の1つを変更すると、コンパイルエラーが修正されます。
これは誰かを助けるかもしれない
ViewControllerを複製して名前を変更したため、このエラーが発生しました。そのため、コンパイルするとこのエラーが発生しました。理由は、両方のView Controllerに、同じ名前の「float」変数、つまりクラスレベルで定義した「float padding = 10.0」があったためです。 View Controllerの1つで上記の変数の名前を変更すると、問題が解決しました。
それは私にも起こりました。私の場合、コアデータの自動生成されたクラスの1つ(1つだけ)が2回挿入されました。 Build Phases ... Compile Sourcesを見て重複を見つけました。オカレンスの1つを削除するだけで問題は解決しました。
私もこの問題に直面しました。私の解決策は、他のクラスの名前と同じ名前を持つグローバル変数の名前を変更することでした。お役に立てれば
ローカライズ可能なxibファイルで遊んでいたときに同じことが起こりました。誤って2つの実装ファイルを作成してしまい、明らかに私の問題を引き起こしました。同じ間違いをしないで実装ファイルを削除/再作成した後、エラーが修正されました。
場合によっては、いくつかの指示に従って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
ふう。
(私が得た実際のエラーは、ここで説明されているものでした: ビルドエラー重複シンボルarclite.o )
.m Fileをインポートしていないことを確認してください。私にとってこれは、#import "SchoolCommuterHome.h"の代わりに#import "SchoolCommuterHome.m"を追加したことです。
開発者の1人が「libSoomla *」プロジェクトファイルを2回残しました。重複したsoomlaファイルを削除して再構築しましたが、それで修正されました!
それが役に立てば幸い。