Third party media library Compilation error in IOS due to libstdc++ / libc++

V
vivek@advaitamtech.com
Fri, Jun 1, 2018 10:05 AM

Hi Guys,

Am trying to compile pjsip with third party media library.

I was getting below error,

  ...

"std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)", referenced from:
_CriticalSection_Destroy in libmedia_manager_clang.ub.a(_2JC4KJDRF4C23C.o)
SYMBOL_00001521 in libmedia_manager_clang.ub.a(_M3LA9D7KKT.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:
SYMBOL_00011459 in libmedia_manager_clang.ub.a(_2JC4KJDRF4C23C.o)
SYMBOL_00011461 in libmedia_manager_clang.ub.a(_2JC4KJDRF4C23C.o)
SYMBOL_00001524 in libmedia_manager_clang.ub.a(_M3LA9D7KKT.o)
ld: symbol(s) not found for architecture armv7

To solve the above error I included -stdlib=libstdc++ in the configure-iphone.

But i ended up in another error. Please find the error below with the warning,

clang: warning: libstdc++ is deprecated; move to libc++ [-Wdeprecated]

"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:
pj::SipTxOption::isEmpty() const in libpjsua2-arm-apple-darwin9.a(siptypes.o)
"std::__1::__vector_base_common<true>::__throw_length_error() const", referenced from:
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 libpjsua2-arm-apple-darwin9.a(endpoint.o)
std::__1::enable_if<(__is_forward_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >>::value) && (is_constructible<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::iterator_traits<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >>::reference>::value), void>::type 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> > > >::assign<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> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in libpjsua2-arm-apple-darwin9.a(endpoint.o)
std::__1::vector<int, std::__1::allocator<int> >::vector<int
>(int*, std::__1::enable_if<(__is_forward_iterator<int*>::value) && (is_constructible<int, std::__1::iterator_traits<int*>::reference>::value), int*>::type) in libpjsua2-arm-apple-darwin9.a(endpoint.o)
void std::__1::vector<pj::AudioMedia*, std::__1::allocatorpj::AudioMedia* >::__push_back_slow_path<pj::AudioMedia* const>(pj::AudioMedia* const&) in libpjsua2-arm-apple-darwin9.a(endpoint.o)
void std::__1::vector<pj::CodecInfo*, std::__1::allocatorpj::CodecInfo* >::__push_back_slow_path<pj::CodecInfo* const>(pj::CodecInfo* const&) in libpjsua2-arm-apple-darwin9.a(endpoint.o)
void std::__1::vector<pj::CallMediaInfo, std::__1::allocatorpj::CallMediaInfo >::__push_back_slow_path<pj::CallMediaInfo const>(pj::CallMediaInfo const&) in libpjsua2-arm-apple-darwin9.a(call.o)
void std::__1::vector<pj::Media*, std::__1::allocatorpj::Media* >::__push_back_slow_path<pj::Media* const>(pj::Media* const&) in libpjsua2-arm-apple-darwin9.a(call.o)

When I include -stdlib=libc++ as per the warning, I get the 1st error again.

I have tried added both , i.e -stdlib=libc++ & -stdlib=libstdc++. But ends up again in 2nd error.

Can anyone help me out here please.

Thanks,
Vivek.

Hi Guys, Am trying to compile pjsip with third party media library. I was getting below error, ... "std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)", referenced from: _CriticalSection_Destroy in libmedia_manager_clang.ub.a(_2JC4KJDRF4C23C.o) SYMBOL_00001521 in libmedia_manager_clang.ub.a(_M3LA9D7KKT.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: SYMBOL_00011459 in libmedia_manager_clang.ub.a(_2JC4KJDRF4C23C.o) SYMBOL_00011461 in libmedia_manager_clang.ub.a(_2JC4KJDRF4C23C.o) SYMBOL_00001524 in libmedia_manager_clang.ub.a(_M3LA9D7KKT.o) ld: symbol(s) not found for architecture armv7 To solve the above error I included -stdlib=libstdc++ in the configure-iphone. But i ended up in another error. Please find the error below with the warning, clang: warning: libstdc++ is deprecated; move to libc++ [-Wdeprecated] "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: pj::SipTxOption::isEmpty() const in libpjsua2-arm-apple-darwin9.a(siptypes.o) "std::__1::__vector_base_common<true>::__throw_length_error() const", referenced from: 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 libpjsua2-arm-apple-darwin9.a(endpoint.o) std::__1::enable_if<(__is_forward_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*>::value) && (is_constructible<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::iterator_traits<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*>::reference>::value), void>::type 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> > > >::assign<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> >*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) in libpjsua2-arm-apple-darwin9.a(endpoint.o) std::__1::vector<int, std::__1::allocator<int> >::vector<int*>(int*, std::__1::enable_if<(__is_forward_iterator<int*>::value) && (is_constructible<int, std::__1::iterator_traits<int*>::reference>::value), int*>::type) in libpjsua2-arm-apple-darwin9.a(endpoint.o) void std::__1::vector<pj::AudioMedia*, std::__1::allocator<pj::AudioMedia*> >::__push_back_slow_path<pj::AudioMedia* const>(pj::AudioMedia* const&) in libpjsua2-arm-apple-darwin9.a(endpoint.o) void std::__1::vector<pj::CodecInfo*, std::__1::allocator<pj::CodecInfo*> >::__push_back_slow_path<pj::CodecInfo* const>(pj::CodecInfo* const&) in libpjsua2-arm-apple-darwin9.a(endpoint.o) void std::__1::vector<pj::CallMediaInfo, std::__1::allocator<pj::CallMediaInfo> >::__push_back_slow_path<pj::CallMediaInfo const>(pj::CallMediaInfo const&) in libpjsua2-arm-apple-darwin9.a(call.o) void std::__1::vector<pj::Media*, std::__1::allocator<pj::Media*> >::__push_back_slow_path<pj::Media* const>(pj::Media* const&) in libpjsua2-arm-apple-darwin9.a(call.o) When I include -stdlib=libc++ as per the warning, I get the 1st error again. I have tried added both , i.e -stdlib=libc++ & -stdlib=libstdc++. But ends up again in 2nd error. Can anyone help me out here please. Thanks, Vivek.