GNOME Bugzilla – Bug 731284
GStreamer Fails to Link on iOS for Deployment Target > 6.1
Last modified: 2016-05-22 18:35:57 UTC
We're using http://gstreamer.freedesktop.org/data/pkg/ios/1.2.4.1/ and the tutorials at cgit.freedesktop.org/~slomo/gst-sdk-tutorials/ and when we change the Deployment Target to something above 6.1 we get linker errors such as: Undefined symbols for architecture i386: "std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_Rep::_S_empty_rep_storage", referenced from: TagLib::String::String() in GStreamer(libtag_a_i386_-tstring.cpp.o) TagLib::String::~String() in GStreamer(libtag_a_i386_-tstring.cpp.o) TagLib::String::String() in GStreamer(libtag_a_i386_-tstring.cpp.o) TagLib::String::String(std::string const&, TagLib::String::Type) in GStreamer(libtag_a_i386_-tstring.cpp.o) TagLib::String::String(wchar_t const*, TagLib::String::Type) in GStreamer(libtag_a_i386_-tstring.cpp.o) TagLib::String::String(char const*, TagLib::String::Type) in GStreamer(libtag_a_i386_-tstring.cpp.o) TagLib::String::String(wchar_t, TagLib::String::Type) in GStreamer(libtag_a_i386_-tstring.cpp.o) There are a lot, but that's one. This also happens on our actual project, but we found it also happens on the tutorial while we were trying to figure out why one worked and the other didn't. The tutorial is just an easier way for you to find it.
Sounds like a missing -lstdc++.
The linked project does include libstdc++ in the invocation. Changing only the "Deployment Target" and nothing else causes it to fail or not.
I can confirm this happens with 1.3.90 as well; setting deployment target manually to 6.0 or 6.1 resolves it, but then you have to make sure your app runs on iOS 6... IIRC Apple switched C++ standard libraries in iOS 7; the new default for iOS 7-only deployment targets is LLVM's libc++ and isn't compatible with the old one (libstdc++) which GStreamer seems to be built with. I seem to have some difficulty just switching the C++ library while keeping an iOS 7 deployment target...
Is this still relevant / still an issue these days with 1.7.2 ?
We no longer support SDK versions older than 8.0, so this might have resolved itself in the meantime. Please re-open if it's still an issue, thanks!