C++ Compilation Issue - Undefined symbols for architecture x86_64 - Mac Os X Mountain Lion

ぐ巨炮叔叔 提交于 2019-12-25 02:54:03

问题


I'm having a compilation issue which I'm unable to solve. I'm developing a cross platform C++ project coding on both Mac Os X 10.8 and Windows. The code compiles and run fine on Windows and on Mac Os X Leopard as well.

Since Apple pushes the developers to stick to the latest platform for various reasons I'm forced to develop on Mountain Lion and I'm trying to get the project to work again.

I compiled correctly all the libraries I needed (wxWidgets, etc) and I imported the project in the latest version of Eclipse. When I try to build the project it tries to compile the firts .cpp file and at the end it (why?) tries to invoke the linker resulting on a series of missing symbols for my own defined classes. None of the other .cpp files is being compiled, so it's pretty understendable why the whole process is failing.

I also tried to invoke make from CLI, with the same result. I went into the makefile and everything seems correct. It looks like a very newbie issue, I feel I'm missing something huge here.

I'm pasting below the output of the compiler, just in case some compiling guru step in. Please feel free to ask for more details.

Compiler output

Pastebin Link: Compiler output

I used PB since the output is quite large.

The relevant section are the invocation of as and collect2 soon after the compiling phase of the very first .cpp file. The missing symbols are defined in other .cpp files in the same dir.

/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

The compiler output ends with the "classic" undefined symbol issue. All emphasized text*emphasized text*emphasized text

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

This shouldn't be an architecture related issue, since specifing i386 as target has the same result (symbol(s) not found for architecture i386).

Thank you,

Evelina


回答1:


Go to your target's "Build Phases" section and verify that all the files you need to compile and link are actually included in the proper sections.

It sounds as if the compiler is not being told to include some things you need.



来源:https://stackoverflow.com/questions/15681603/c-compilation-issue-undefined-symbols-for-architecture-x86-64-mac-os-x-mou

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!