我有一个我无法解决的编译问题。我正在开发Mac OS X 10.8和Windows上的跨平台C ++项目编码。代码在Windows和Mac Os X Leopard上编译并运行良好。
由于Apple出于各种原因推动开发人员坚持使用最新平台,因此我不得不在Mountain Lion上开发,我正试图让项目重新开始工作。
我正确编译了我需要的所有库(wxWidgets等),并在最新版本的Eclipse中导入了该项目。当我尝试构建项目时,它尝试编译firts .cpp文件,最后它(为什么?)尝试调用链接器,导致我自己定义的类的一系列缺失符号。其他.cpp文件都没有被编译,因此整个过程失败的原因很不合理。
我也尝试从CLI调用make,结果相同。我进入了makefile,一切似乎都正确。它看起来像一个非常新手的问题,我觉得我在这里错过了一些巨大的东西。
我正在粘贴在编译器的输出之下,以防一些编译大师介入。请随时询问更多详细信息。
Pastebin Link:Compiler output
我使用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找不到符号)。
谢谢,
埃维莉娜
答案 0 :(得分:0)
转到目标的“构建阶段”部分,验证编译和链接所需的所有文件是否实际包含在正确的部分中。
听起来好像没有告诉编译器包含你需要的东西。