0

解決できないコンパイルの問題があります。Mac Os X 10.8 と Windows の両方でクロス プラットフォームの C++ プロジェクト コーディングを開発しています。このコードは、Windows および Mac Os X Leopard でもコンパイルおよび実行されます。

Apple はさまざまな理由で開発者に最新のプラットフォームに固執するように圧力をかけているため、私は Mountain Lion での開発を余儀なくされ、プロジェクトを再び機能させようとしています。

必要なすべてのライブラリ (wxWidgets など) を正しくコンパイルし、プロジェクトを最新バージョンの Eclipse にインポートしました。プロジェクトをビルドしようとすると、最初の .cpp ファイルをコンパイルしようとし、最後に (なぜ?) リンカーを呼び出そうとするため、独自に定義したクラスの一連のシンボルが失われます。他の .cpp ファイルはコンパイルされていないため、プロセス全体が失敗する理由はかなり理解できます。

また、CLI から make を呼び出そうとしましたが、同じ結果になりました。私はメイクファイルに入りましたが、すべてが正しいようです。それは非常に初心者の問題のように見えます。ここで何か大きなものが欠けているように感じます。

コンパイルの第一人者が介入する場合に備えて、コンパイラの出力の下に貼り付けます。詳細についてはお気軽にお問い合わせください。

コンパイラ出力

Pastebin リンク:コンパイラ出力

出力がかなり大きいので、PB を使用しました。

関連するセクションは、最初の .cpp ファイルのコンパイル フェーズ直後のasおよびcollect2の呼び出しです。不足しているシンボルは、同じディレクトリ内の他の .cpp ファイルで定義されています。

/usr/llvm-gcc-4.2/bin/../libexec/gcc/i686-apple-darwin11/4.2.1/as -arch x86_64 -force_cpusubtype_ALL -o /var/folders/br/h6ln_j014ll56zwc8x6xjmk80000gn/T//ccSUmHal.o /var/folders/br/h6ln_j014ll56zwc8x6xjmk80000gn/T//ccn8ex81.s

/usr/llvm-gcc-4.2/bin/../libexec/gcc/i686-apple-darwin11/4.2.1/collect2 -dynamic -arch x86_64 -macosx_version_min 10.8.3 -weak_reference_mismatches non-weak -o Calcoli.o -lcrt1.10.6.o -L/usr/llvm-gcc-4.2/bin/../lib/gcc/i686-apple-darwin11/4.2.1/x86_64 -L/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1/x86_64 -L/usr/llvm-gcc-4.2/bin/../lib/gcc/i686-apple-darwin11/4.2.1 -L/usr/llvm-gcc-4.2/bin/../lib/gcc -L/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1 -L/usr/llvm-gcc-4.2/bin/../lib/gcc/i686-apple-darwin11/4.2.1/../../.. -L/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1/../../.. /var/folders/br/h6ln_j014ll56zwc8x6xjmk80000gn/T//ccSUmHal.o -lstdc++ -lSystem -lgcc -lSystem

コンパイラ出力は、「古典的な」未定義シンボルの問題で終わります。すべての強調テキスト*強調テキスト*強調テキスト

Undefined symbols for architecture x86_64:
  "typeinfo for TipoPuntoCalc", referenced from:
      Calcoli::setPuntoS(GTGraphicObject*)      in ccSUmHal.o
  "typeinfo for TipoPali", referenced from:
      Calcoli::setPaloS(GTGraphicObject*)      in ccSUmHal.o
  "typeinfo for TipoRett", referenced from:
      Calcoli::setFondazioneS(GTGraphicObject*)       in ccSUmHal.o
  "_main", referenced from:
      start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [Calcoli.o] Error 1

i386 をターゲットとして指定しても同じ結果が得られるため (アーキテクチャ i386 のシンボルが見つからない)、これはアーキテクチャ関連の問題ではないはずです。

ありがとうございました、

エヴェリーナ

4

1 に答える 1

0

ターゲットの「Build Phases」セクションに移動し、コンパイルおよびリンクする必要があるすべてのファイルが実際に適切なセクションに含まれていることを確認します。

コンパイラが必要なものを含めるように指示されていないように聞こえます。

于 2013-03-28T12:35:28.030 に答える