DWilches
DWilches

Reputation: 23016

Qt Creator: Undefined symbols for architecture x86_64

I have a program in Qt creator that compiles and runs fine in a Windows machine. But as soon as I tried to compile it in a Mac OS X (10.9) I received these messages:

Undefined symbols for architecture x86_64:
  "std::__1::__basic_string_common<true>::__throw_length_error() const", referenced from:
      std::__1::enable_if<__is_forward_iterator<char*>::value, void>::type std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init<char*>(char*, char*) in libVolumeSelectorLib.a(NetCDFDataSource.o)
...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [UI.app/Contents/MacOS/UI] Error 1
14:38:02: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project VVSIT (kit: Desktop Qt 5.4.0 clang 64bit)
When executing step "Make"

I have tried cleaning and compiling again in case some file built on Windows had made it to the Mac, but that is not the case, the problem continues happening.

I've checked these posts but their solutions didn't work:

Any idea how to solve this error?

Upvotes: 2

Views: 17039

Answers (1)

DWilches
DWilches

Reputation: 23016

After some research I found this thread: Qt5.1/Qt5.2 + XCode 5.0.2 + Mac OS 10.9 (Mavericks), Can’t link to the libraries

That link contains the solution that worked for me, I had to edit the file:

/Applications/Qt/5.4/clang_64/mkspecs/macx-clang/qmake.conf

And change the line that says:

QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7

to:

QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.9

After that, I cleaned every subproject in my project, and compiled them again, and all is working fine now.

In case you wonder what does that change in the clang++ do, what it does is to change the parameter -mmacosx-version-min=10.7 to -mmacosx-version-min=10.9.

Upvotes: 4

Related Questions