Cannot build default app with Bullet on iOS

Anything libgdx related goes here!

Cannot build default app with Bullet on iOS

Postby Hotshot5000 » Sun Apr 15, 2018 7:15 pm

I have created a new project using the gdx-setup.jar with the bullet library and built it for iOS.
When building for iOS using roboVM I get the following problem (doesn't matter if it's thumb7 or arm64.):

ERROR] Undefined symbols for architecture arm64:
[ERROR] "std::_Rb_tree_decrement(std::_Rb_tree_node_base*)", referenced from:
[ERROR] std::_Rb_tree<int, std::pair<int const, std::string>, std::_Select1st<std::pair<int const, std::string> >, std::less<int>, std::allocator<std::pair<int const, std::string> > >::_M_insert_unique(std::_Rb_tree_iterator<std::pair<int const, std::string> >, std::pair<int const, std::string> const&) in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] std::_Rb_tree<int, std::pair<int const, std::string>, std::_Select1st<std::pair<int const, std::string> >, std::less<int>, std::allocator<std::pair<int const, std::string> > >::_M_insert_unique(std::pair<int const, std::string> const&) in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] std::_Rb_tree<std::string, std::pair<std::string const, int>, std::_Select1st<std::pair<std::string const, int> >, std::less<std::string>, std::allocator<std::pair<std::string const, int> > >::_M_insert_unique(std::_Rb_tree_iterator<std::pair<std::string const, int> >, std::pair<std::string const, int> const&) in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] std::_Rb_tree<std::string, std::pair<std::string const, int>, std::_Select1st<std::pair<std::string const, int> >, std::less<std::string>, std::allocator<std::pair<std::string const, int> > >::_M_insert_unique(std::pair<std::string const, int> const&) in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] std::_Rb_tree<int, std::pair<int const, int>, std::_Select1st<std::pair<int const, int> >, std::less<int>, std::allocator<std::pair<int const, int> > >::_M_insert_unique(std::_Rb_tree_iterator<std::pair<int const, int> >, std::pair<int const, int> const&) in libgdx-bullet.a(User2InternalIndex.o)
[ERROR] std::_Rb_tree<int, std::pair<int const, int>, std::_Select1st<std::pair<int const, int> >, std::less<int>, std::allocator<std::pair<int const, int> > >::_M_insert_unique(std::pair<int const, int> const&) in libgdx-bullet.a(User2InternalIndex.o)
[ERROR] std::_Rb_tree<int, std::pair<int const, std::vector<int, std::allocator<int> > >, std::_Select1st<std::pair<int const, std::vector<int, std::allocator<int> > > >, std::less<int>, std::allocator<std::pair<int const, std::vector<int, std::allocator<int> > > > >::_M_insert_unique(std::_Rb_tree_iterator<std::pair<int const, std::vector<int, std::allocator<int> > > >, std::pair<int const, std::vector<int, std::allocator<int> > > const&) in libgdx-bullet.a(User2InternalIndex.o)
[ERROR] ...
[ERROR] "std::_Rb_tree_increment(std::_Rb_tree_node_base*)", referenced from:
[ERROR] std::_Rb_tree<int, std::pair<int const, std::string>, std::_Select1st<std::pair<int const, std::string> >, std::less<int>, std::allocator<std::pair<int const, std::string> > >::_M_insert_unique(std::_Rb_tree_iterator<std::pair<int const, std::string> >, std::pair<int const, std::string> const&) in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] std::_Rb_tree<std::string, std::pair<std::string const, int>, std::_Select1st<std::pair<std::string const, int> >, std::less<std::string>, std::allocator<std::pair<std::string const, int> > >::_M_insert_unique(std::_Rb_tree_iterator<std::pair<std::string const, int> >, std::pair<std::string const, int> const&) in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] btInverseDynamicsBullet3::User2InternalIndex::buildMapping() in libgdx-bullet.a(User2InternalIndex.o)
[ERROR] std::_Rb_tree<int, std::pair<int const, int>, std::_Select1st<std::pair<int const, int> >, std::less<int>, std::allocator<std::pair<int const, int> > >::_M_insert_unique(std::_Rb_tree_iterator<std::pair<int const, int> >, std::pair<int const, int> const&) in libgdx-bullet.a(User2InternalIndex.o)
[ERROR] std::_Rb_tree<int, std::pair<int const, std::vector<int, std::allocator<int> > >, std::_Select1st<std::pair<int const, std::vector<int, std::allocator<int> > > >, std::less<int>, std::allocator<std::pair<int const, std::vector<int, std::allocator<int> > > > >::_M_insert_unique(std::_Rb_tree_iterator<std::pair<int const, std::vector<int, std::allocator<int> > > >, std::pair<int const, std::vector<int, std::allocator<int> > > const&) in libgdx-bullet.a(User2InternalIndex.o)
[ERROR] "std::string::assign(std::string const&)", referenced from:
[ERROR] btInverseDynamicsBullet3::MultiBodyNameMap::addBody(int, std::string const&) in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] btInverseDynamicsBullet3::MultiBodyNameMap::addJoint(int, std::string const&) in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] btInverseDynamicsBullet3::MultiBodyNameMap::getBodyName(int, std::string*) const in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] btInverseDynamicsBullet3::MultiBodyNameMap::getJointName(int, std::string*) const in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] "std::string::_Rep::_S_empty_rep_storage", referenced from:
[ERROR] std::map<int, std::string, std::less<int>, std::allocator<std::pair<int const, std::string> > >::operator[](int const&) in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] std::map<std::string, int, std::less<std::string>, std::allocator<std::pair<std::string const, int> > >::operator[](std::string const&) in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] btInverseDynamicsBullet3::writeGraphvizDotFile(btInverseDynamicsBullet3::MultiBodyTree const*, btInverseDynamicsBullet3::MultiBodyNameMap const*, char const*) in libgdx-bullet.a(MultiBodyTreeDebugGraph.o)
[ERROR] std::_Rb_tree<std::string, std::pair<std::string const, int>, std::_Select1st<std::pair<std::string const, int> >, std::less<std::string>, std::allocator<std::pair<std::string const, int> > >::_M_erase(std::_Rb_tree_node<std::pair<std::string const, int> >*) in libgdx-bullet.a(extras_wrap.o)
[ERROR] std::_Rb_tree<int, std::pair<int const, std::string>, std::_Select1st<std::pair<int const, std::string> >, std::less<int>, std::allocator<std::pair<int const, std::string> > >::_M_erase(std::_Rb_tree_node<std::pair<int const, std::string> >*) in libgdx-bullet.a(extras_wrap.o)
[ERROR] "std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)", referenced from:
[ERROR] std::_Rb_tree<int, std::pair<int const, std::string>, std::_Select1st<std::pair<int const, std::string> >, std::less<int>, std::allocator<std::pair<int const, std::string> > >::_M_insert_unique(std::_Rb_tree_iterator<std::pair<int const, std::string> >, std::pair<int const, std::string> const&) in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] std::_Rb_tree<int, std::pair<int const, std::string>, std::_Select1st<std::pair<int const, std::string> >, std::less<int>, std::allocator<std::pair<int const, std::string> > >::_M_insert_unique(std::pair<int const, std::string> const&) in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] std::_Rb_tree<std::string, std::pair<std::string const, int>, std::_Select1st<std::pair<std::string const, int> >, std::less<std::string>, std::allocator<std::pair<std::string const, int> > >::_M_insert_unique(std::_Rb_tree_iterator<std::pair<std::string const, int> >, std::pair<std::string const, int> const&) in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] std::_Rb_tree<std::string, std::pair<std::string const, int>, std::_Select1st<std::pair<std::string const, int> >, std::less<std::string>, std::allocator<std::pair<std::string const, int> > >::_M_insert_unique(std::pair<std::string const, int> const&) in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] std::_Rb_tree<int, std::pair<int const, int>, std::_Select1st<std::pair<int const, int> >, std::less<int>, std::allocator<std::pair<int const, int> > >::_M_insert_unique(std::_Rb_tree_iterator<std::pair<int const, int> >, std::pair<int const, int> const&) in libgdx-bullet.a(User2InternalIndex.o)
[ERROR] std::_Rb_tree<int, std::pair<int const, int>, std::_Select1st<std::pair<int const, int> >, std::less<int>, std::allocator<std::pair<int const, int> > >::_M_insert_unique(std::pair<int const, int> const&) in libgdx-bullet.a(User2InternalIndex.o)
[ERROR] std::_Rb_tree<int, std::pair<int const, std::vector<int, std::allocator<int> > >, std::_Select1st<std::pair<int const, std::vector<int, std::allocator<int> > > >, std::less<int>, std::allocator<std::pair<int const, std::vector<int, std::allocator<int> > > > >::_M_insert_unique(std::_Rb_tree_iterator<std::pair<int const, std::vector<int, std::allocator<int> > > >, std::pair<int const, std::vector<int, std::allocator<int> > > const&) in libgdx-bullet.a(User2InternalIndex.o)
[ERROR] ...
[ERROR] "std::string::_Rep::_M_destroy(std::allocator<char> const&)", referenced from:
[ERROR] std::map<int, std::string, std::less<int>, std::allocator<std::pair<int const, std::string> > >::operator[](int const&) in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] std::map<std::string, int, std::less<std::string>, std::allocator<std::pair<std::string const, int> > >::operator[](std::string const&) in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] btInverseDynamicsBullet3::writeGraphvizDotFile(btInverseDynamicsBullet3::MultiBodyTree const*, btInverseDynamicsBullet3::MultiBodyNameMap const*, char const*) in libgdx-bullet.a(MultiBodyTreeDebugGraph.o)
[ERROR] std::_Rb_tree<std::string, std::pair<std::string const, int>, std::_Select1st<std::pair<std::string const, int> >, std::less<std::string>, std::allocator<std::pair<std::string const, int> > >::_M_erase(std::_Rb_tree_node<std::pair<std::string const, int> >*) in libgdx-bullet.a(extras_wrap.o)
[ERROR] std::_Rb_tree<int, std::pair<int const, std::string>, std::_Select1st<std::pair<int const, std::string> >, std::less<int>, std::allocator<std::pair<int const, std::string> > >::_M_erase(std::_Rb_tree_node<std::pair<int const, std::string> >*) in libgdx-bullet.a(extras_wrap.o)
[ERROR] "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&)", referenced from:
[ERROR] std::map<int, std::string, std::less<int>, std::allocator<std::pair<int const, std::string> > >::operator[](int const&) in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] std::map<std::string, int, std::less<std::string>, std::allocator<std::pair<std::string const, int> > >::operator[](std::string const&) in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] std::_Rb_tree<int, std::pair<int const, std::string>, std::_Select1st<std::pair<int const, std::string> >, std::less<int>, std::allocator<std::pair<int const, std::string> > >::_M_create_node(std::pair<int const, std::string> const&) in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] std::_Rb_tree<std::string, std::pair<std::string const, int>, std::_Select1st<std::pair<std::string const, int> >, std::less<std::string>, std::allocator<std::pair<std::string const, int> > >::_M_create_node(std::pair<std::string const, int> const&) in libgdx-bullet.a(MultiBodyNameMap.o)
[ERROR] ld: symbol(s) not found for architecture arm64
[ERROR] clang: error: linker command failed with exit code 1 (use -v to see invocation)

Any idea how to get through this?

EDIT: By the looks of it it seems that libgdx-bullet was build using libstdc++ library and not the more modern libc++. Any idea on how to configure the project to build using libstdc++?
Hotshot5000
 
Posts: 13
Joined: Mon Aug 19, 2013 9:04 pm

Re: Cannot build default app with Bullet on iOS

Postby Hotshot5000 » Mon Apr 16, 2018 12:29 pm

Ok I've managed to build using libstdc++ but now I get linker errors in librobovm-rt... It definitely looks like bullet was built using libstdc++ while robovm uses libc++. Is this a bug?

Undefined symbols for architecture armv7:
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::find(char, unsigned long) const", referenced from:
realpath(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in librobovm-rt.a(merged.o)
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, unsigned long, std::__1::allocator<char> const&)", referenced from:
realpath(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in librobovm-rt.a(merged.o)
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::compare(unsigned long, unsigned long, char const*, unsigned long) const", referenced from:
realpath(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in librobovm-rt.a(merged.o)
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::push_back(char)", referenced from:
realpath(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in librobovm-rt.a(merged.o)
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::rfind(char, unsigned long) const", referenced from:
realpath(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in librobovm-rt.a(merged.o)
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::erase(unsigned long, unsigned long)", referenced from:
realpath(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in librobovm-rt.a(merged.o)
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::assign(char const*)", referenced from:
getExecutablePath() in librobovm-rt.a(merged.o)
realpath(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in librobovm-rt.a(merged.o)
getExceptionSummary(JNINativeInterface const**, _jthrowable*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in librobovm-rt.a(merged.o)
_jniGetStackTrace in librobovm-rt.a(merged.o)
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::assign(char const*, unsigned long)", referenced from:
readlink(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in librobovm-rt.a(merged.o)
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::operator=(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
register_libcore_icu_ICU(_JNIEnv*) in librobovm-rt.a(merged.o)
realpath(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in librobovm-rt.a(merged.o)
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
register_libcore_icu_ICU(_JNIEnv*) in librobovm-rt.a(merged.o)
collectStandardNames(_JNIEnv*, char const*, char const*, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >&) in librobovm-rt.a(merged.o)
void std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::__push_back_slow_path<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> > const&&&) in librobovm-rt.a(merged.o)
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::append(char const*)", referenced from:
_Java_java_lang_System_specialProperties in librobovm-rt.a(merged.o)
register_libcore_icu_ICU(_JNIEnv*) in librobovm-rt.a(merged.o)
getExceptionSummary(JNINativeInterface const**, _jthrowable*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in librobovm-rt.a(merged.o)
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::append(char const*, unsigned long)", referenced from:
icu_51::StringByteSink<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::Append(char const*, int) in librobovm-rt.a(merged.o)
realpath(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in librobovm-rt.a(merged.o)
std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::operator+<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*) in librobovm-rt.a(merged.o)
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::reserve(unsigned long)", referenced from:
realpath(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in librobovm-rt.a(merged.o)
"std::__1::__vector_base_common<true>::__throw_length_error() const", referenced from:
std::__1::vector<x509_st*, std::__1::allocator<x509_st*> >::allocate(unsigned long) in librobovm-rt.a(merged.o)
void std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::__push_back_slow_path<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&) in librobovm-rt.a(merged.o)
void std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::__push_back_slow_path<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> > const&&&) in librobovm-rt.a(merged.o)
void std::__1::vector<AsynchronousSocketCloseMonitor*, std::__1::allocator<AsynchronousSocketCloseMonitor*> >::__push_back_slow_path<AsynchronousSocketCloseMonitor*>(AsynchronousSocketCloseMonitor*&&) in librobovm-rt.a(merged.o)
void std::__1::vector<ScopedBytesRW*, std::__1::allocator<ScopedBytesRW*> >::__push_back_slow_path<ScopedBytesRW*>(ScopedBytesRW*&&) in librobovm-rt.a(merged.o)
void std::__1::vector<iovec, std::__1::allocator<iovec> >::__push_back_slow_path<iovec const&>(iovec const&&&) in librobovm-rt.a(merged.o)
void std::__1::vector<ScopedBytesRO*, std::__1::allocator<ScopedBytesRO*> >::__push_back_slow_path<ScopedBytesRO*>(ScopedBytesRO*&&) in librobovm-rt.a(merged.o)
...
"std::logic_error::logic_error(char const*)", referenced from:
std::__1::__split_buffer<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >&>::__split_buffer(unsigned long, unsigned long, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >&) in librobovm-rt.a(merged.o)
std::__1::__split_buffer<AsynchronousSocketCloseMonitor*, std::__1::allocator<AsynchronousSocketCloseMonitor*>&>::__split_buffer(unsigned long, unsigned long, std::__1::allocator<AsynchronousSocketCloseMonitor*>&) in librobovm-rt.a(merged.o)
std::__1::__split_buffer<ScopedBytesRW*, std::__1::allocator<ScopedBytesRW*>&>::__split_buffer(unsigned long, unsigned long, std::__1::allocator<ScopedBytesRW*>&) in librobovm-rt.a(merged.o)
std::__1::__split_buffer<iovec, std::__1::allocator<iovec>&>::__split_buffer(unsigned long, unsigned long, std::__1::allocator<iovec>&) in librobovm-rt.a(merged.o)
std::__1::__split_buffer<ScopedBytesRO*, std::__1::allocator<ScopedBytesRO*>&>::__split_buffer(unsigned long, unsigned long, std::__1::allocator<ScopedBytesRO*>&) in librobovm-rt.a(merged.o)
"std::__1::__basic_string_common<true>::__throw_length_error() const", referenced from:
_Java_java_io_File_listImpl in librobovm-rt.a(merged.o)
register_libcore_icu_ICU(_JNIEnv*) in librobovm-rt.a(merged.o)
realpath(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in librobovm-rt.a(merged.o)
std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::operator+<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*) in librobovm-rt.a(merged.o)
ld: symbol(s) not found for architecture armv7
Hotshot5000
 
Posts: 13
Joined: Mon Aug 19, 2013 9:04 pm


Return to Libgdx

Who is online

Users browsing this forum: No registered users and 1 guest