1. ホーム
  2. objective-c

build failed with: ld: duplicate symbol _OBJC_CLASS_$_Algebra5FirstViewController

2023-10-30 10:10:30

質問

iPhoneシミュレータでアプリを実行すると、突然このエラーが発生します。

clang: error: linker command failed with exit code 1 (use -v to see the invocation): リンカーのコマンドは終了コード1で失敗しました。 を使用)。

ld: シンボル _OBJC_CLASS_$_Algebra5FirstViewController が重複しています。 .../Algebra5-anwcuftojtxtgkfootneeqhwztj/Build/Intermediates/Algebra5.build/Debug-iphonesimulator/Algebra5.build/Objects-normal/i386/ExercisesViewController.o の中にあります。 と .../Algebra5-anwcuftojtxtgkfootneeeqhwztj/Build/Intermediates/Algebra5.build/Debug-iphonesimulator/PSLE Algebra5.build/Objects-normal/i386/PSLE_Algebra5FirstViewController.oをビルドする。 アーキテクチャがi386の場合

どういった内容なのでしょうか?

どのように解決するのですか?

Algebra5FirstViewControllerというクラスが複数回コンパイルされているようです。

Xcodeのプロジェクトソースに.mと.mmが一度だけ含まれていることを確認できますか?また、コンパイルログ(右の最後のアイコン、ブレークポイントのアイコンの隣)を確認し、一度だけコンパイルされていることを確認することで確認できます。

また、このクラスがリンクするライブラリの一部であり、同じ名前のクラスがある場合、同じエラーが発生する可能性があります。

最後に、古いオブジェクト ファイルがまだ存在し、コンパイルされたファイルに何らかのジャンクがある場合に備えて、クリーンアップと再構築を試してみることができます。念のため...

EDIT

また、2つ目の参照はExercisesViewControllerのファイル内で行われていることに気づきました。もしかしたら、このファイルに何かあるのかもしれません。.hの代わりにAlgebra5FirstViewControllerファイルを#importしたか、ExercisesViewControllerに@implementation (ExercisesViewController)の代わりに@implementation (Algebra5FirstViewController)があるか、このファイルに何らかのジャンクがあり、Clean and Rebuildできれいになるはずです。