2

この問題の解決策を探していましたが、うまくいきませんでした。私はプログラムのコンパイルに多くの問題を抱えています。Xcode でプログラムを実行しようとすると、次のように表示されます。

/Users/LauraChaparro/Library/Developer/Xcode/DerivedData/Busqueda-ercduihvfosqcoczkrgljkkmgxam/Build/Intermediates/Busqueda.build/Debug/Busqueda.build/Objects-normal/x86_64/Uno.o および /Users/LauraChaparro/ の複製シンボル _main Library/Developer/Xcode/DerivedData/Busqueda-ercduihvfosqcoczkrgljkkmgxam/Build/Intermediates/Busqueda.build/Debug/Busqueda.build/Objects-normal/x86_64/アーキテクチャ x86_64 の main.o

なぜこれが起こるのか理解できません!C++ プロジェクトです... または、別の IDE をお勧めできれば、本当に感謝しています!

4

2 に答える 2

8

オブジェクトファイルmainの作成に使用されるコードの一部でを定義しているようです。Uno.oは1つしか持てmainないため、ライブラリの構築に使用されるオブジェクトはを定義しないでくださいmain。これは、アプリケーション自体でのみ定義する必要があります。

これはリンカーエラーであり、他のIDEで発生する可能性があります。のどこで定義されUno.oているかを見つけて削除する必要があります。main

于 2012-05-18T11:00:12.723 に答える
3

あなたが持っているエラーはリンカーエラーです。何が間違っているかを正確に教えてくれます。リンカは、シンボル *_main* がオブジェクト ファイルを調べて複数回定義されていることを発見しました。これにより、使用するシンボルをリンカーが判断できないため、リンカーはオブジェクト ファイルの実行可能ファイルを作成できなくなります。2 つのシンボルが見つかった場所を引き続き教えてくれます。

Uno.o ファイル (これは Uno.cpp ファイルのコンパイルに由来すると仮定します) に一度、main.o ファイル (main.cpp ファイルから) から別のものを取得します。

これは、リンカが両方のファイルでメイン メソッドのシンボルを見つけることができることを意味します。

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

  • Uno.cpp と main.cpp の両方でmain関数を定義する
  • 非インライン のメイン定義をヘッダーに配置し、これを Uno.cpp ファイルと main.cpp ファイル (または別のインクルードなどを含むインクルード) の両方に含めます。

別の IDE についてのご要望として、コンパイラ エラーもリンカ エラーも IDE のエラーではないことを思い出していただきたいと思います。圧倒的な数の場合、問題は IDE のユーザーが何か間違ったことをしたことです。

于 2012-05-18T11:20:33.017 に答える