Hi, guys.
I'm curious if it is possible to use libc++ with Vuforia SDK 3.0? I see the libVuforia.a is build with libstdc++ but my application uses a lot of code that is libc++ dependent, so I would like to ask you to give developers a possibility to use libc++ in their projects (which is a default for iOS 5 and later). I think you can build two versions and provide them both to developers as such a restriction is really critical for some users as they don't have access to entire source code to build it from scratch using the standard library they need.
Now I have link errors in Xcode 5 (which are expected) like:
Undefined symbols for architecture armv7:
"vtable for std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >", referenced from:
l10743 in libVuforia.a(libVuforia.a-armv7-master.o)
l10754 in libVuforia.a(libVuforia.a-armv7-master.o)
l10798 in libVuforia.a(libVuforia.a-armv7-master.o)
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
"VTT for std::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >", referenced from:
l10743 in libVuforia.a(libVuforia.a-armv7-master.o)
l10754 in libVuforia.a(libVuforia.a-armv7-master.o)
l10798 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::cerr", referenced from:
l10744 in libVuforia.a(libVuforia.a-armv7-master.o)
l14918 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::string::assign(std::string const&)", referenced from:
l14884 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::ios_base::Init::~Init()", referenced from:
l15185 in libVuforia.a(libVuforia.a-armv7-master.o)
l15186 in libVuforia.a(libVuforia.a-armv7-master.o)
l15210 in libVuforia.a(libVuforia.a-armv7-master.o)
l15211 in libVuforia.a(libVuforia.a-armv7-master.o)
l15214 in libVuforia.a(libVuforia.a-armv7-master.o)
l15215 in libVuforia.a(libVuforia.a-armv7-master.o)
l15217 in libVuforia.a(libVuforia.a-armv7-master.o)
...
"std::_Rb_tree_decrement(std::_Rb_tree_node_base*)", referenced from:
l14755 in libVuforia.a(libVuforia.a-armv7-master.o)
l14756 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)", referenced from:
l14755 in libVuforia.a(libVuforia.a-armv7-master.o)
l14756 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::ostream::flush()", referenced from:
l10862 in libVuforia.a(libVuforia.a-armv7-master.o)
l14918 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::basic_ios<char, std::char_traits<char> >::widen(char) const", referenced from:
l10752 in libVuforia.a(libVuforia.a-armv7-master.o)
l10862 in libVuforia.a(libVuforia.a-armv7-master.o)
l14918 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::basic_istream<char, std::char_traits<char> >& std::getline<char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char)", referenced from:
l10752 in libVuforia.a(libVuforia.a-armv7-master.o)
"vtable for std::basic_streambuf<char, std::char_traits<char> >", referenced from:
l10743 in libVuforia.a(libVuforia.a-armv7-master.o)
l10754 in libVuforia.a(libVuforia.a-armv7-master.o)
l10798 in libVuforia.a(libVuforia.a-armv7-master.o)
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
"std::basic_ios<char, std::char_traits<char> >::clear(std::_Ios_Iostate)", referenced from:
l10749 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&)", referenced from:
l10747 in libVuforia.a(libVuforia.a-armv7-master.o)
l10748 in libVuforia.a(libVuforia.a-armv7-master.o)
l10752 in libVuforia.a(libVuforia.a-armv7-master.o)
l14884 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::istream& std::istream::_M_extract<unsigned int>(unsigned int&)", referenced from:
l10748 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::cout", referenced from:
l10862 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::_Rb_tree_increment(std::_Rb_tree_node_base*)", referenced from:
l14755 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)", referenced from:
l10744 in libVuforia.a(libVuforia.a-armv7-master.o)
l10862 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)", referenced from:
l10748 in libVuforia.a(libVuforia.a-armv7-master.o)
l10749 in libVuforia.a(libVuforia.a-armv7-master.o)
l10751 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::ios_base::Init::Init()", referenced from:
l15185 in libVuforia.a(libVuforia.a-armv7-master.o)
l15186 in libVuforia.a(libVuforia.a-armv7-master.o)
l15210 in libVuforia.a(libVuforia.a-armv7-master.o)
l15211 in libVuforia.a(libVuforia.a-armv7-master.o)
l15214 in libVuforia.a(libVuforia.a-armv7-master.o)
l15215 in libVuforia.a(libVuforia.a-armv7-master.o)
l15217 in libVuforia.a(libVuforia.a-armv7-master.o)
...
"std::string::find_first_of(char const*, unsigned long, unsigned long) const", referenced from:
l10747 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::ostream::operator<<(int)", referenced from:
l10862 in libVuforia.a(libVuforia.a-armv7-master.o)
l14918 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::string::compare(char const*) const", referenced from:
l10742 in libVuforia.a(libVuforia.a-armv7-master.o)
l10748 in libVuforia.a(libVuforia.a-armv7-master.o)
l10752 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&, unsigned long, unsigned long)", referenced from:
l10747 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::ostream& std::ostream::_M_insert<unsigned long>(unsigned long)", referenced from:
l10862 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::string::_Rep::_M_destroy(std::allocator<char> const&)", referenced from:
l10742 in libVuforia.a(libVuforia.a-armv7-master.o)
l10743 in libVuforia.a(libVuforia.a-armv7-master.o)
l10747 in libVuforia.a(libVuforia.a-armv7-master.o)
l10748 in libVuforia.a(libVuforia.a-armv7-master.o)
l10749 in libVuforia.a(libVuforia.a-armv7-master.o)
l10751 in libVuforia.a(libVuforia.a-armv7-master.o)
l10752 in libVuforia.a(libVuforia.a-armv7-master.o)
...
"std::string::_Rep::_S_empty_rep_storage", referenced from:
l10742 in libVuforia.a(libVuforia.a-armv7-master.o)
l10743 in libVuforia.a(libVuforia.a-armv7-master.o)
l10747 in libVuforia.a(libVuforia.a-armv7-master.o)
l10748 in libVuforia.a(libVuforia.a-armv7-master.o)
l10749 in libVuforia.a(libVuforia.a-armv7-master.o)
l10751 in libVuforia.a(libVuforia.a-armv7-master.o)
l10752 in libVuforia.a(libVuforia.a-armv7-master.o)
...
"std::locale::~locale()", referenced from:
l10743 in libVuforia.a(libVuforia.a-armv7-master.o)
l10754 in libVuforia.a(libVuforia.a-armv7-master.o)
l10798 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >::basic_istringstream(std::string const&, std::_Ios_Openmode)", referenced from:
l10743 in libVuforia.a(libVuforia.a-armv7-master.o)
l10754 in libVuforia.a(libVuforia.a-armv7-master.o)
l10798 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::__throw_length_error(char const*)", referenced from:
l14873 in libVuforia.a(libVuforia.a-armv7-master.o)
l14879 in libVuforia.a(libVuforia.a-armv7-master.o)
l14880 in libVuforia.a(libVuforia.a-armv7-master.o)
l14884 in libVuforia.a(libVuforia.a-armv7-master.o)
l14885 in libVuforia.a(libVuforia.a-armv7-master.o)
l14949 in libVuforia.a(libVuforia.a-armv7-master.o)
l14979 in libVuforia.a(libVuforia.a-armv7-master.o)
...
"std::__throw_out_of_range(char const*)", referenced from:
l10747 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::ostream& std::ostream::_M_insert<double>(double)", referenced from:
l10862 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::istream::operator>>(int&)", referenced from:
l10743 in libVuforia.a(libVuforia.a-armv7-master.o)
l10748 in libVuforia.a(libVuforia.a-armv7-master.o)
l10752 in libVuforia.a(libVuforia.a-armv7-master.o)
l10754 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)", referenced from:
l10742 in libVuforia.a(libVuforia.a-armv7-master.o)
l10748 in libVuforia.a(libVuforia.a-armv7-master.o)
l10752 in libVuforia.a(libVuforia.a-armv7-master.o)
l10798 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::ostream::put(char)", referenced from:
l10862 in libVuforia.a(libVuforia.a-armv7-master.o)
l14918 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::ios_base::~ios_base()", referenced from:
l10743 in libVuforia.a(libVuforia.a-armv7-master.o)
l10754 in libVuforia.a(libVuforia.a-armv7-master.o)
l10798 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::istream::get()", referenced from:
l10748 in libVuforia.a(libVuforia.a-armv7-master.o)
l10750 in libVuforia.a(libVuforia.a-armv7-master.o)
l10752 in libVuforia.a(libVuforia.a-armv7-master.o)
"std::istream& std::istream::_M_extract<float>(float&)", referenced from:
l10752 in libVuforia.a(libVuforia.a-armv7-master.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
+1 to libc++ linkage
I've been using 2.8.3 previously with my C++11 code and everything worked like a charm. With the new 3.0.5 build my app now fails to link due to the same issues like topicstarter have.