Poco libraries and OSX/Cmake master branch i386 / c++11

Hello! The forum was down yesterday, so I started a Github issue for this: https://github.com/openframeworks/openFrameworks/issues/3905

I’m trying to compile the master branch under OSX10.10 w/ CMake. Getting a bunch of Poco-related linker errors (though not as many as if the libraries weren’t linked at all)

The errors disappear in x86_64, it’s just in 32bit that they turn up.

"Poco::TextConverter::convert(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&)", referenced from: ofTrueTypeFont::getStringAsPoints(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, bool, bool) const in ofTrueTypeFont.cpp.o ofTrueTypeFont::createStringMesh(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, float, float, bool) const in ofTrueTypeFont.cpp.o ofTrueTypeFont::drawStringAsShapes(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, float, float) const in ofTrueTypeFont.cpp.o "Poco::SystemException::SystemException(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", referenced from: Poco::MutexImpl::unlockImpl() in ofEasyCam.cpp.o Poco::MutexImpl::lockImpl() in ofEasyCam.cpp.o Poco::MutexImpl::unlockImpl() in ofMainLoop.cpp.o ...

It goes on… and I also get two non-Poco linker errors:
"RtAudio::openStream(RtAudio::StreamParameters*, RtAudio::StreamParameters*, unsigned long, unsigned int, unsigned int*, int (*)(void*, void*, unsigned int, double, unsigned int, void*), void*, RtAudio::StreamOptions*, void (*)(RtError::Type, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&))", referenced from: ofRtAudioSoundStream::setup(int, int, int, int, int) in ofRtAudioSoundStream.cpp.o "ofParameterGroup::get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const", referenced from: ofxOscReceiver::getParameter(ofAbstractParameter&) in ofxOscReceiver.cpp.o

I checked and the linked libraries contain the exact symbols mentioned, so I don’t understand why the linker won’t see them… Any clues?

I updated Poco through the Apothecary. The project compiled fine under 0.8.4, before I started adapting it to C++11 / oF 0.9.0.

Again, we’re using libc++ and 32bit. I guess this combination isn’t recommended (32b is supposed to go with stdlibc++), but I’m not sure I understand why?

right now osx 32bits is using libstc++ so if you compile apps using llibc++ it’ll fal with undefined symbols. this is done for compatibility reasons with old libraries that might be compiled with libstdc++ and makes it imposible to use full c++11 support with the 32bits version. i’m not sure is the best solution. but by now can’t you use 64bits instead of 32?

thanks arturo for answering, and sorry for spamming the github with this as well.

yes, for now we are able to build in 64b. still, we ported our whole app to libc++ which means we cannot compile in 32b anymore…

i’m not sure either that this is the best solution, especially if in the long run libc++ will become the standard… it would be nice to have the option (if not the obligation) to compile libc++ in 32b.