0

我遇到了无法解决的编译问题。我正在 Mac Os X 10.8 和 Windows 上开发跨平台 C++ 项目编码。该代码在 Windows 和 Mac Os X Leopard 上也能正常编译和运行。

由于 Apple 出于各种原因推动开发人员坚持使用最新平台,我被迫在 Mountain Lion 上进行开发,我正试图让该项目再次运行。

我正确编译了我需要的所有库(wxWidgets 等),并在最新版本的 Eclipse 中导入了项目。当我尝试构建项目时,它会尝试编译第一个 .cpp 文件,最后它(为什么?)尝试调用链接器,导致我自己定义的类缺少一系列符号。其他 .cpp 文件都没有被编译,所以整个过程失败的原因是可以理解的。

我还尝试从 CLI 调用 make,结果相同。我进入了makefile,一切似乎都是正确的。它看起来像一个非常新手的问题,我觉得我在这里错过了一些巨大的东西。

我粘贴在编译器的输出下方,以防万一编译大师介入。请随时询问更多详细信息。

编译器输出

Pastebin 链接:编译器输出

我使用了 PB,因为输出非常大。

相关部分是在第一个 .cpp 文件的编译阶段之后不久调用ascollect2 。缺少的符号在同一目录中的其他 .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

转到目标的“构建阶段”部分并验证您需要编译和链接的所有文件实际上都包含在正确的部分中。

听起来好像没有告诉编译器包含您需要的一些东西。

于 2013-03-28T12:35:28.030 回答