open-webrtc-toolkit / owt-client-native

Open WebRTC Toolkit client SDK for native Windows/Linux/iOS applications.
https://01.org/open-webrtc-toolkit
Apache License 2.0
391 stars 180 forks source link

iOS: Undefined symbols for architecture arm64 (Similar to problem solved in PR 317) #553

Closed dilldilldill closed 3 years ago

dilldilldill commented 3 years ago

I am having trouble getting the OWT framework to work in my iOS project. First problem I encountered (which took me quite a while to solve) was that I had to swap out 'Woogeen' with 'OWT' in the frameworks module map.

Now Xcode throws errors of this kind at me (see complete list below)

Undefined symbols for architecture arm64:
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(int)", referenced from:
      rtc::webrtc_logging_impl::ToStringVal rtc::webrtc_logging_impl::MakeVal<webrtc::FieldTrialConstrained<int>, webrtc::FieldTrialConstrained<int>, (void*)0>(webrtc::FieldTrialConstrained<int> const&) in OWT(decision_logic.o)
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(bool)", referenced from:
      rtc::webrtc_logging_impl::ToStringVal rtc::webrtc_logging_impl::MakeVal<webrtc::FieldTrialParameter<bool>, webrtc::FieldTrialParameter<bool>, (void*)0>(webrtc::FieldTrialParameter<bool> const&) in OWT(decision_logic.o)
Show complete list of error messages ``` Undefined symbols for architecture arm64: "std::__1::basic_ostream >::operator<<(int)", referenced from: rtc::webrtc_logging_impl::ToStringVal rtc::webrtc_logging_impl::MakeVal, webrtc::FieldTrialConstrained, (void*)0>(webrtc::FieldTrialConstrained const&) in OWT(decision_logic.o) "std::__1::basic_ostream >::operator<<(bool)", referenced from: rtc::webrtc_logging_impl::ToStringVal rtc::webrtc_logging_impl::MakeVal, webrtc::FieldTrialParameter, (void*)0>(webrtc::FieldTrialParameter const&) in OWT(decision_logic.o) "std::__1::to_string(long long)", referenced from: webrtc::VideoStreamEncoder::ParseEncoderSwitchFieldTrial() const in OWT(video_stream_encoder.o) "std::__1::basic_string, std::__1::allocator >::copy(char*, unsigned long, unsigned long) const", referenced from: webrtc::RTCPReceiver::CNAME(unsigned int, char*) const in OWT(rtcp_receiver.o) "std::__1::basic_string, std::__1::allocator >::insert(unsigned long, unsigned long, char)", referenced from: google::protobuf::operator<<(std::__1::basic_ostream >&, google::protobuf::uint128 const&) in OWT(int128.o) "std::__1::basic_string, std::__1::allocator >::assign(char const*, unsigned long)", referenced from: webrtc::audioproc::ReverseStream::add_channel(void const*, unsigned long) in OWT(aec_dump_impl.o) google::protobuf::StringPiece::CopyToString(std::__1::basic_string, std::__1::allocator >*) const in OWT(stringpiece.o) google::protobuf::UnescapeCEscapeString(std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator >*, std::__1::vector, std::__1::allocator >, std::__1::allocator, std::__1::allocator > > >*) in OWT(strutil.o) webrtc::BaseRtpStringExtension::Parse(rtc::ArrayView, std::__1::basic_string, std::__1::allocator >*) in OWT(rtp_header_extensions.o) webrtc::audioproc::Stream::add_input_channel(void const*, unsigned long) in OWT(capture_stream_info.o) webrtc::audioproc::Stream::add_output_channel(void const*, unsigned long) in OWT(capture_stream_info.o) webrtc::rtcp::Bye::Parse(webrtc::rtcp::CommonHeader const&) in OWT(bye.o) ... "void std::__1::__sort&, int*>(int*, int*, std::__1::__less&)", referenced from: void std::__1::sort >(int*, int*, std::__1::__less) in OWT(webrtc_voice_engine.o) "std::nothrow", referenced from: std::__1::pair std::__1::get_temporary_buffer(long) in OWT(webrtc_video_engine.o) std::__1::pair std::__1::get_temporary_buffer(long) in OWT(basic_ice_controller.o) std::__1::pair std::__1::get_temporary_buffer(long) in OWT(simulcast_rate_allocator.o) "operator new(unsigned long, std::nothrow_t const&)", referenced from: std::__1::pair std::__1::get_temporary_buffer(long) in OWT(webrtc_video_engine.o) std::__1::pair std::__1::get_temporary_buffer(long) in OWT(basic_ice_controller.o) std::__1::pair std::__1::get_temporary_buffer(long) in OWT(simulcast_rate_allocator.o) "std::__1::basic_string, std::__1::allocator >::insert(unsigned long, char const*, unsigned long)", referenced from: std::__1::basic_string, std::__1::allocator >::insert(unsigned long, std::__1::basic_string, std::__1::allocator > const&) in OWT(stun.o) "std::__1::basic_string, std::__1::allocator >::rfind(char, unsigned long) const", referenced from: rtc::SocketAddress::FromString(std::__1::basic_string, std::__1::allocator > const&) in OWT(socket_address.o) webrtc::ParseHostnameAndPortFromString(std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator >*, int*) in OWT(ice_server_parsing.o) "std::__1::__vector_base_common::__throw_out_of_range() const", referenced from: std::__1::vector >::at(unsigned long) in OWT(jsep_session_description.o) std::__1::vector >::at(unsigned long) const in OWT(network.o) std::__1::vector >::at(unsigned long) in OWT(media_session.o) std::__1::vector, std::__1::allocator > >::at(unsigned long) in OWT(sdp_offer_answer.o) "std::exception::~exception()", referenced from: absl::bad_optional_access::~bad_optional_access() in OWT(bad_optional_access.o) absl::bad_variant_access::~bad_variant_access() in OWT(bad_variant_access.o) "std::__1::basic_string, std::__1::allocator >::__grow_by(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long)", referenced from: std::__1::enable_if<(__is_cpp17_forward_iterator >::value) && (__libcpp_string_gets_noexcept_iterator >::value), std::__1::basic_string, std::__1::allocator >&>::type std::__1::basic_string, std::__1::allocator >::assign >(std::__1::__wrap_iter, std::__1::__wrap_iter) in OWT(json_reader.o) std::__1::enable_if<(__is_cpp17_forward_iterator::value) && (__libcpp_string_gets_noexcept_iterator::value), std::__1::basic_string, std::__1::allocator >&>::type std::__1::basic_string, std::__1::allocator >::assign(char const*, char const*) in OWT(http_common.o) std::__1::basic_string, std::__1::allocator >& std::__1::basic_string, std::__1::allocator >::__append_forward_unsafe >(std::__1::__wrap_iter, std::__1::__wrap_iter) in OWT(strutil.o) std::__1::basic_string, std::__1::allocator >& std::__1::basic_string, std::__1::allocator >::__append_forward_unsafe(char const*, char const*) in OWT(strtod.o) "std::__1::basic_ostream >::~basic_ostream()", referenced from: std::__1::basic_ostringstream, std::__1::allocator >::~basic_ostringstream() in OWT(json_value.o) std::__1::basic_ostringstream, std::__1::allocator >::~basic_ostringstream() in OWT(json_reader.o) std::__1::basic_ostringstream, std::__1::allocator >::~basic_ostringstream() in OWT(json_writer.o) std::__1::basic_ostringstream, std::__1::allocator >::~basic_ostringstream() in OWT(common.o) std::__1::basic_ostringstream, std::__1::allocator >::~basic_ostringstream() in OWT(int128.o) std::__1::basic_ostringstream, std::__1::allocator >::~basic_ostringstream() in OWT(decision_logic.o) "std::__1::basic_ostream >::flush()", referenced from: std::__1::basic_ostream >& std::__1::endl >(std::__1::basic_ostream >&) in OWT(json_value.o) "std::__1::basic_string, std::__1::allocator >::find(char, unsigned long) const", referenced from: rtc::tokenize(std::__1::basic_string, std::__1::allocator > const&, char, char, char, std::__1::vector, std::__1::allocator >, std::__1::allocator, std::__1::allocator > > >*) in OWT(string_encode.o) rtc::tokenize_first(std::__1::basic_string, std::__1::allocator > const&, char, std::__1::basic_string, std::__1::allocator >*, std::__1::basic_string, std::__1::allocator >*) in OWT(string_encode.o) webrtc::field_trial::FindFullName(std::__1::basic_string, std::__1::allocator > const&) in OWT(field_trial.o) rtc::SocketAddress::FromString(std::__1::basic_string, std::__1::allocator > const&) in OWT(socket_address.o) rtc::Network::ToString() const in OWT(network.o) Json::(anonymous namespace)::valueToString(double, bool, unsigned int, Json::PrecisionType) in OWT(json_writer.o) webrtc::ParseConnectionData(std::__1::basic_string, std::__1::allocator > const&, rtc::SocketAddress*, webrtc::SdpParseError*) in OWT(webrtc_sdp.o) ... "operator delete[](void*)", referenced from: std::__1::default_delete::_EnableIfConvertible::type std::__1::default_delete::operator()(unsigned char*) const in OWT(helpers.o) std::__1::default_delete::_EnableIfConvertible::type std::__1::default_delete::operator()(unsigned char*) const in OWT(h264_common.o) std::__1::default_delete::_EnableIfConvertible::type std::__1::default_delete::operator()(char*) const in OWT(port.o) rtc::BufferedReadAdapter::~BufferedReadAdapter() in OWT(socket_adapters.o) rtc::AsyncSocksProxySocket::SendAuth() in OWT(socket_adapters.o) std::__1::default_delete::_EnableIfConvertible::type std::__1::default_delete::operator()(char*) const in OWT(socket_adapters.o) std::__1::default_delete::_EnableIfConvertible::type std::__1::default_delete::operator()(unsigned char*) const in OWT(async_tcp_socket.o) ... "std::__1::basic_string, std::__1::allocator >::at(unsigned long)", referenced from: rtc::CreateRandomData(unsigned long, std::__1::basic_string, std::__1::allocator >*) in OWT(helpers.o) google::protobuf::StripWhitespace(std::__1::basic_string, std::__1::allocator >*) in OWT(strutil.o) "operator new[](unsigned long)", referenced from: rtc::CreateRandomString(unsigned long, char const*, int, std::__1::basic_string, std::__1::allocator >*) in OWT(helpers.o) rtc::CreateRandomUuid() in OWT(helpers.o) rtc::BufferT::EnsureCapacityWithHeadroom(unsigned long, bool) in OWT(h264_common.o) rtc::BufferedReadAdapter::BufferedReadAdapter(rtc::AsyncSocket*, unsigned long) in OWT(socket_adapters.o) rtc::AsyncSocksProxySocket::SendAuth() in OWT(socket_adapters.o) rtc::BufferT::EnsureCapacityWithHeadroom(unsigned long, bool) in OWT(socket_adapters.o) rtc::BufferT::EnsureCapacityWithHeadroom(unsigned long, bool) in OWT(socket_adapters.o) ... "std::__1::basic_streambuf >::imbue(std::__1::locale const&)", referenced from: vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(sdputils.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_value.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_reader.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_writer.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(common.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(int128.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(decision_logic.o) ... "std::__1::basic_streambuf >::setbuf(char*, long)", referenced from: vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(sdputils.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_value.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_reader.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_writer.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(common.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(int128.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(decision_logic.o) ... "std::__1::basic_streambuf >::sync()", referenced from: vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(sdputils.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_value.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_reader.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_writer.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(common.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(int128.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(decision_logic.o) ... "std::__1::basic_streambuf >::xsgetn(char*, long)", referenced from: vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(sdputils.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_value.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_reader.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_writer.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(common.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(int128.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(decision_logic.o) ... "std::__1::basic_streambuf >::xsputn(char const*, long)", referenced from: vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(sdputils.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_value.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_reader.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_writer.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(common.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(int128.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(decision_logic.o) ... "std::__1::basic_ostream >::~basic_ostream()", referenced from: construction vtable for std::__1::basic_ostream >-in-std::__1::basic_stringstream, std::__1::allocator > in OWT(sdputils.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(json_value.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(json_reader.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(json_writer.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(common.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(int128.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(decision_logic.o) ... "virtual thunk to std::__1::basic_ostream >::~basic_ostream()", referenced from: construction vtable for std::__1::basic_ostream >-in-std::__1::basic_stringstream, std::__1::allocator > in OWT(sdputils.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(json_value.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(json_reader.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(json_writer.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(common.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(int128.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(decision_logic.o) ... "___cxa_pure_virtual", referenced from: vtable for std::__1::__function::__base)> in OWT(OWTConferenceClient.o) vtable for std::__1::__function::__base >)> in OWT(OWTConferenceClient.o) vtable for std::__1::__function::__base)> in OWT(OWTConferenceClient.o) vtable for std::__1::__function::__base)> in OWT(OWTConferenceClient.o) vtable for std::__1::__function::__base in OWT(OWTConferenceClient.o) vtable for std::__1::__function::__base in OWT(OWTConferenceClient.o) vtable for owt::base::PublicationObserver in OWT(OWTConferencePublication.o) ... "sio::client::set_reconnect_delay(unsigned int)", referenced from: owt::conference::ConferenceSocketSignalingChannel::Connect(std::__1::basic_string, std::__1::allocator > const&, std::__1::function)>, std::__1::function >)>) in OWT(conferencesocketsignalingchannel.o) "virtual thunk to std::__1::basic_istream >::~basic_istream()", referenced from: construction vtable for std::__1::basic_istream >-in-std::__1::basic_stringstream, std::__1::allocator > in OWT(sdputils.o) construction vtable for std::__1::basic_istream >-in-std::__1::basic_istringstream, std::__1::allocator > in OWT(json_reader.o) "std::__1::basic_string, std::__1::allocator >::append(unsigned long, char)", referenced from: rtc::(anonymous namespace)::HttpParseAttributes(char const*, unsigned long, std::__1::vector, std::__1::allocator >, std::__1::basic_string, std::__1::allocator > >, std::__1::allocator, std::__1::allocator >, std::__1::basic_string, std::__1::allocator > > > >&) in OWT(http_common.o) google::protobuf::operator<<(std::__1::basic_ostream >&, google::protobuf::uint128 const&) in OWT(int128.o) "std::__1::basic_iostream >::~basic_iostream()", referenced from: construction vtable for std::__1::basic_iostream >-in-std::__1::basic_stringstream, std::__1::allocator > in OWT(sdputils.o) "non-virtual thunk to std::__1::basic_iostream >::~basic_iostream()", referenced from: construction vtable for std::__1::basic_iostream >-in-std::__1::basic_stringstream, std::__1::allocator > in OWT(sdputils.o) "std::__1::basic_streambuf >::basic_streambuf()", referenced from: std::__1::basic_stringbuf, std::__1::allocator >::basic_stringbuf(std::__1::basic_string, std::__1::allocator > const&, unsigned int) in OWT(sdputils.o) std::__1::basic_stringbuf, std::__1::allocator >::basic_stringbuf(unsigned int) in OWT(sdputils.o) std::__1::basic_stringbuf, std::__1::allocator >::basic_stringbuf(unsigned int) in OWT(json_value.o) std::__1::basic_stringbuf, std::__1::allocator >::basic_stringbuf(std::__1::basic_string, std::__1::allocator > const&, unsigned int) in OWT(json_reader.o) std::__1::basic_stringbuf, std::__1::allocator >::basic_stringbuf(unsigned int) in OWT(json_reader.o) std::__1::basic_stringbuf, std::__1::allocator >::basic_stringbuf(unsigned int) in OWT(json_writer.o) std::__1::basic_stringbuf, std::__1::allocator >::basic_stringbuf(unsigned int) in OWT(common.o) ... "std::__1::basic_iostream >::~basic_iostream()", referenced from: construction vtable for std::__1::basic_iostream >-in-std::__1::basic_stringstream, std::__1::allocator > in OWT(sdputils.o) "std::__1::basic_ostream >::sentry::sentry(std::__1::basic_ostream >&)", referenced from: std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in OWT(sdputils.o) std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in OWT(json_value.o) std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in OWT(json_writer.o) absl::operator<<(std::__1::basic_ostream >&, absl::string_view) in OWT(string_view.o) std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in OWT(int128.o) std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in OWT(status.o) "std::__1::basic_ostream >::sentry::~sentry()", referenced from: std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in OWT(sdputils.o) std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in OWT(json_value.o) std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in OWT(json_writer.o) absl::operator<<(std::__1::basic_ostream >&, absl::string_view) in OWT(string_view.o) std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in OWT(int128.o) std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in OWT(status.o) "std::__1::basic_istream >::~basic_istream()", referenced from: construction vtable for std::__1::basic_istream >-in-std::__1::basic_stringstream, std::__1::allocator > in OWT(sdputils.o) construction vtable for std::__1::basic_istream >-in-std::__1::basic_istringstream, std::__1::allocator > in OWT(json_reader.o) "std::__1::collate::id", referenced from: std::__1::collate const& std::__1::use_facet >(std::__1::locale const&) in OWT(sdputils.o) "std::__1::ios_base::clear(unsigned int)", referenced from: std::__1::ios_base::setstate(unsigned int) in OWT(sdputils.o) std::__1::ios_base::setstate(unsigned int) in OWT(json_value.o) std::__1::ios_base::setstate(unsigned int) in OWT(json_reader.o) std::__1::ios_base::setstate(unsigned int) in OWT(json_writer.o) std::__1::ios_base::setstate(unsigned int) in OWT(int128.o) std::__1::ios_base::setstate(unsigned int) in OWT(status.o) "vtable for std::__1::ios_base", referenced from: std::__1::ios_base::ios_base() in OWT(sdputils.o) std::__1::ios_base::ios_base() in OWT(json_value.o) std::__1::ios_base::ios_base() in OWT(json_reader.o) std::__1::ios_base::ios_base() in OWT(json_writer.o) std::__1::ios_base::ios_base() in OWT(common.o) std::__1::ios_base::ios_base() in OWT(int128.o) std::__1::ios_base::ios_base() in OWT(decision_logic.o) ... NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. "std::__1::__get_classname(char const*, bool)", referenced from: unsigned int std::__1::regex_traits::__lookup_classname >(std::__1::__wrap_iter, std::__1::__wrap_iter, bool, char) const in OWT(sdputils.o) unsigned int std::__1::regex_traits::__lookup_classname(char const*, char const*, bool, char) const in OWT(sdputils.o) "std::__1::locale::locale()", referenced from: std::__1::regex_traits::regex_traits() in OWT(sdputils.o) "std::__1::basic_istream >::read(char*, long)", referenced from: google::protobuf::io::IstreamInputStream::CopyingIstreamInputStream::Read(void*, int) in OWT(zero_copy_stream_impl.o) "std::__1::basic_string, std::__1::allocator >::append(char const*, unsigned long)", referenced from: rtc::webrtc_checks_impl::ParseArg(char**, rtc::webrtc_checks_impl::CheckArgType const**, std::__1::basic_string, std::__1::allocator >*) in OWT(checks.o) std::__1::basic_string, std::__1::allocator >::append(std::__1::basic_string, std::__1::allocator > const&) in OWT(checks.o) std::__1::basic_string, std::__1::allocator >::append(std::__1::basic_string, std::__1::allocator > const&) in OWT(conferencesocketsignalingchannel.o) rtc::StringBuilder::operator<<(absl::string_view) in OWT(logging.o) std::__1::basic_string, std::__1::allocator >::append(std::__1::basic_string, std::__1::allocator > const&) in OWT(logging.o) std::__1::basic_string, std::__1::allocator >::append(std::__1::basic_string, std::__1::allocator > const&) in OWT(peerconnectiondependencyfactory.o) std::__1::basic_string, std::__1::allocator >::append(std::__1::basic_string, std::__1::allocator > const&) in OWT(string_encode.o) ... "std::__1::basic_ios >::~basic_ios()", referenced from: std::__1::basic_stringstream, std::__1::allocator >::~basic_stringstream() in OWT(sdputils.o) std::__1::basic_ostringstream, std::__1::allocator >::~basic_ostringstream() in OWT(json_value.o) std::__1::basic_istringstream, std::__1::allocator >::~basic_istringstream() in OWT(json_reader.o) std::__1::basic_ostringstream, std::__1::allocator >::~basic_ostringstream() in OWT(json_reader.o) std::__1::basic_ostringstream, std::__1::allocator >::~basic_ostringstream() in OWT(json_writer.o) std::__1::basic_ostringstream, std::__1::allocator >::~basic_ostringstream() in OWT(common.o) std::__1::basic_ostringstream, std::__1::allocator >::~basic_ostringstream() in OWT(int128.o) ... "std::__1::__match_any_but_newline::__exec(std::__1::__state&) const", referenced from: vtable for std::__1::__match_any_but_newline in OWT(sdputils.o) "sio::client::~client()", referenced from: owt::conference::ConferenceSocketSignalingChannel::~ConferenceSocketSignalingChannel() in OWT(conferencesocketsignalingchannel.o) "std::__1::basic_istream >::sentry::sentry(std::__1::basic_istream >&, bool)", referenced from: std::__1::basic_istream >& std::__1::getline, std::__1::allocator >(std::__1::basic_istream >&, std::__1::basic_string, std::__1::allocator >&, char) in OWT(sdputils.o) std::__1::basic_istream >& std::__1::getline, std::__1::allocator >(std::__1::basic_istream >&, std::__1::basic_string, std::__1::allocator >&, char) in OWT(json_reader.o) "std::__1::ios_base::getloc() const", referenced from: std::__1::basic_ios >::widen(char) const in OWT(sdputils.o) std::__1::basic_ios >::widen(char) const in OWT(json_value.o) std::__1::basic_ios >::widen(char) const in OWT(json_writer.o) std::__1::basic_ios >::widen(char) const in OWT(string_view.o) std::__1::basic_ios >::widen(char) const in OWT(int128.o) std::__1::basic_ios >::widen(char) const in OWT(status.o) "std::__1::__call_once(unsigned long volatile&, void*, void (*)(void*))", referenced from: void std::__1::call_once(std::__1::once_flag&, owt::base::PeerConnectionDependencyFactory::Get()::$_1&&) in OWT(peerconnectiondependencyfactory.o) void std::__1::call_once(std::__1::once_flag&, void (&)()) in OWT(implicit_weak_message.o) "std::__1::__shared_weak_count::__get_deleter(std::type_info const&) const", referenced from: vtable for std::__1::__shared_ptr_pointer, std::__1::allocator > in OWT(OWTConferenceSubscription.o) vtable for std::__1::__shared_ptr_pointer, std::__1::allocator > in OWT(OWTConferenceSubscription.o) vtable for std::__1::__shared_ptr_pointer, std::__1::allocator > in OWT(OWTConferenceSubscription.o) vtable for std::__1::__shared_ptr_pointer, std::__1::allocator > in OWT(OWTConferenceSubscription.o) vtable for std::__1::__shared_ptr_pointer, std::__1::allocator > in OWT(OWTConferenceSubscription.o) vtable for std::__1::__shared_ptr_pointer, std::__1::allocator > in OWT(conferenceclient.o) vtable for std::__1::__shared_ptr_pointer, std::__1::allocator > in OWT(conferenceclient.o) ... "std::__1::stoi(std::__1::basic_string, std::__1::allocator > const&, unsigned long*, int)", referenced from: owt::base::FunctionalStatsObserver::GetIceCandidateReport(webrtc::StatsReport const&) in OWT(functionalobserver.o) "std::__1::basic_string, std::__1::allocator >::reserve(unsigned long)", referenced from: bool rtc::Base64::DecodeFromArrayTemplate, std::__1::allocator > >(char const*, unsigned long, int, std::__1::basic_string, std::__1::allocator >*, unsigned long*) in OWT(base64.o) rtc::CreateRandomString(unsigned long, char const*, int, std::__1::basic_string, std::__1::allocator >*) in OWT(helpers.o) rtc::CreateRandomUuid() in OWT(helpers.o) rtc::join(std::__1::vector, std::__1::allocator >, std::__1::allocator, std::__1::allocator > > > const&, char) in OWT(string_encode.o) Json::Reader::normalizeEOL(char const*, char const*) in OWT(json_reader.o) Json::Reader::decodeString(Json::Reader::Token&, std::__1::basic_string, std::__1::allocator >&) in OWT(json_reader.o) Json::OurReader::normalizeEOL(char const*, char const*) in OWT(json_reader.o) ... "sio::client::set_fail_listener(std::__1::function const&)", referenced from: owt::conference::ConferenceSocketSignalingChannel::Connect(std::__1::basic_string, std::__1::allocator > const&, std::__1::function)>, std::__1::function >)>) in OWT(conferencesocketsignalingchannel.o) "std::__1::basic_string, std::__1::allocator >::at(unsigned long) const", referenced from: owt::base::StringUtils::IsBase64EncodedString(std::__1::basic_string, std::__1::allocator >) in OWT(stringutils.o) rtc::Base64::IsBase64Encoded(std::__1::basic_string, std::__1::allocator > const&) in OWT(base64.o) rtc::SocketAddress::FromString(std::__1::basic_string, std::__1::allocator > const&) in OWT(socket_address.o) webrtc::GetLine(std::__1::basic_string, std::__1::allocator > const&, unsigned long*, std::__1::basic_string, std::__1::allocator >*) in OWT(webrtc_sdp.o) webrtc::ParseFailed(std::__1::basic_string, std::__1::allocator > const&, unsigned long, std::__1::basic_string, std::__1::allocator > const&, webrtc::SdpParseError*) in OWT(webrtc_sdp.o) webrtc::ParseHostnameAndPortFromString(std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator >*, int*) in OWT(ice_server_parsing.o) "std::__1::cerr", referenced from: Json::throwRuntimeError(std::__1::basic_string, std::__1::allocator > const&) in OWT(json_value.o) Json::throwLogicError(std::__1::basic_string, std::__1::allocator > const&) in OWT(json_value.o) "std::__1::__thread_struct::~__thread_struct()", referenced from: std::__1::default_delete::operator()(std::__1::__thread_struct*) const in OWT(conferencesocketsignalingchannel.o) "std::__1::__basic_string_common::__throw_length_error() const", referenced from: std::__1::enable_if<__is_cpp17_forward_iterator::value, void>::type std::__1::basic_string, std::__1::allocator >::__init(char*, char*) in OWT(sdputils.o) std::__1::enable_if<__is_cpp17_forward_iterator >::value, void>::type std::__1::basic_string, std::__1::allocator >::__init >(std::__1::__wrap_iter, std::__1::__wrap_iter) in OWT(sdputils.o) std::__1::enable_if<__is_cpp17_forward_iterator >::value, void>::type std::__1::basic_string, std::__1::allocator >::__init >(std::__1::__wrap_iter, std::__1::__wrap_iter) in OWT(sdputils.o) std::__1::enable_if<__is_cpp17_forward_iterator::value, void>::type std::__1::basic_string, std::__1::allocator >::__init(char const*, char const*) in OWT(sdputils.o) std::__1::enable_if<__is_cpp17_forward_iterator::value, void>::type std::__1::basic_string, std::__1::allocator >::__init(char const*, char const*) in OWT(json_value.o) std::__1::enable_if<__is_cpp17_forward_iterator::value, void>::type std::__1::basic_string, std::__1::allocator >::__init(char const*, char const*) in OWT(json_reader.o) std::__1::enable_if<__is_cpp17_forward_iterator::value, void>::type std::__1::basic_string, std::__1::allocator >::__init(char*, char*) in OWT(json_reader.o) ... "std::__1::basic_string, std::__1::allocator >::append(std::__1::basic_string, std::__1::allocator > const&, unsigned long, unsigned long)", referenced from: google::protobuf::StringReplace(std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&, bool, std::__1::basic_string, std::__1::allocator >*) in OWT(strutil.o) google::protobuf::GlobalReplaceSubstring(std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator >*) in OWT(strutil.o) "std::__1::__thread_local_data()", referenced from: void* std::__1::__thread_proxy >, std::__1::function > >(void*) in OWT(conferencesocketsignalingchannel.o) void* std::__1::__thread_proxy >, owt::conference::ConferenceSocketSignalingChannel::OnReconnectionTicket(std::__1::basic_string, std::__1::allocator > const&)::$_14> >(void*) in OWT(conferencesocketsignalingchannel.o) "vtable for std::__1::basic_ios >", referenced from: std::__1::basic_ios >::basic_ios() in OWT(sdputils.o) std::__1::basic_ios >::basic_ios() in OWT(json_value.o) std::__1::basic_ios >::basic_ios() in OWT(json_reader.o) std::__1::basic_ios >::basic_ios() in OWT(json_writer.o) std::__1::basic_ios >::basic_ios() in OWT(common.o) std::__1::basic_ios >::basic_ios() in OWT(int128.o) std::__1::basic_ios >::basic_ios() in OWT(decision_logic.o) ... NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. "std::__1::__next_prime(unsigned long)", referenced from: std::__1::__hash_table, std::__1::allocator >, owt::base::AudioSourceInfo>, std::__1::__unordered_map_hasher, std::__1::allocator >, std::__1::__hash_value_type, std::__1::allocator >, owt::base::AudioSourceInfo>, std::__1::hash, std::__1::allocator > >, true>, std::__1::__unordered_map_equal, std::__1::allocator >, std::__1::__hash_value_type, std::__1::allocator >, owt::base::AudioSourceInfo>, std::__1::equal_to, std::__1::allocator > >, true>, std::__1::allocator, std::__1::allocator >, owt::base::AudioSourceInfo> > >::rehash(unsigned long) in OWT(conferenceclient.o) std::__1::__hash_table, std::__1::allocator >, owt::base::VideoSourceInfo>, std::__1::__unordered_map_hasher, std::__1::allocator >, std::__1::__hash_value_type, std::__1::allocator >, owt::base::VideoSourceInfo>, std::__1::hash, std::__1::allocator > >, true>, std::__1::__unordered_map_equal, std::__1::allocator >, std::__1::__hash_value_type, std::__1::allocator >, owt::base::VideoSourceInfo>, std::__1::equal_to, std::__1::allocator > >, true>, std::__1::allocator, std::__1::allocator >, owt::base::VideoSourceInfo> > >::rehash(unsigned long) in OWT(conferenceclient.o) std::__1::__hash_table, std::__1::allocator >, std::__1::basic_string, std::__1::allocator > >, std::__1::__unordered_map_hasher, std::__1::allocator >, std::__1::__hash_value_type, std::__1::allocator >, std::__1::basic_string, std::__1::allocator > >, std::__1::hash, std::__1::allocator > >, true>, std::__1::__unordered_map_equal, std::__1::allocator >, std::__1::__hash_value_type, std::__1::allocator >, std::__1::basic_string, std::__1::allocator > >, std::__1::equal_to, std::__1::allocator > >, true>, std::__1::allocator, std::__1::allocator >, std::__1::basic_string, std::__1::allocator > > > >::rehash(unsigned long) in OWT(conferenceclient.o) std::__1::__hash_table, std::__1::allocator >, std::__1::shared_ptr >, std::__1::__unordered_map_hasher, std::__1::allocator >, std::__1::__hash_value_type, std::__1::allocator >, std::__1::shared_ptr >, std::__1::hash, std::__1::allocator > >, true>, std::__1::__unordered_map_equal, std::__1::allocator >, std::__1::__hash_value_type, std::__1::allocator >, std::__1::shared_ptr >, std::__1::equal_to, std::__1::allocator > >, true>, std::__1::allocator, std::__1::allocator >, std::__1::shared_ptr > > >::rehash(unsigned long) in OWT(conferenceclient.o) std::__1::__hash_table, std::__1::allocator >, owt::conference::ConferenceClient::StreamType>, std::__1::__unordered_map_hasher, std::__1::allocator >, std::__1::__hash_value_type, std::__1::allocator >, owt::conference::ConferenceClient::StreamType>, std::__1::hash, std::__1::allocator > >, true>, std::__1::__unordered_map_equal, std::__1::allocator >, std::__1::__hash_value_type, std::__1::allocator >, owt::conference::ConferenceClient::StreamType>, std::__1::equal_to, std::__1::allocator > >, true>, std::__1::allocator, std::__1::allocator >, owt::conference::ConferenceClient::StreamType> > >::rehash(unsigned long) in OWT(conferenceclient.o) std::__1::__hash_table, std::__1::allocator >, OWTRemoteStream* __strong>, std::__1::__unordered_map_hasher, std::__1::allocator >, std::__1::__hash_value_type, std::__1::allocator >, OWTRemoteStream* __strong>, std::__1::hash, std::__1::allocator > >, true>, std::__1::__unordered_map_equal, std::__1::allocator >, std::__1::__hash_value_type, std::__1::allocator >, OWTRemoteStream* __strong>, std::__1::equal_to, std::__1::allocator > >, true>, std::__1::allocator, std::__1::allocator >, OWTRemoteStream* __strong> > >::rehash(unsigned long) in OWT(ConferenceClientObserverObjcImpl.o) std::__1::__hash_table, std::__1::__unordered_map_hasher, std::__1::hash, true>, std::__1::__unordered_map_equal, std::__1::equal_to, true>, std::__1::allocator > >::rehash(unsigned long) in OWT(OWTMediaFormat.o) ... "virtual thunk to std::__1::basic_istream >::~basic_istream()", referenced from: construction vtable for std::__1::basic_istream >-in-std::__1::basic_stringstream, std::__1::allocator > in OWT(sdputils.o) construction vtable for std::__1::basic_istream >-in-std::__1::basic_istringstream, std::__1::allocator > in OWT(json_reader.o) "virtual thunk to std::__1::basic_ostream >::~basic_ostream()", referenced from: construction vtable for std::__1::basic_ostream >-in-std::__1::basic_stringstream, std::__1::allocator > in OWT(sdputils.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(json_value.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(json_reader.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(json_writer.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(common.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(int128.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(decision_logic.o) ... "std::__1::__throw_system_error(int, char const*)", referenced from: std::__1::thread::thread&, void>(std::__1::function&) in OWT(conferencesocketsignalingchannel.o) std::__1::thread::thread, std::__1::allocator > const&)::$_14, void>(owt::conference::ConferenceSocketSignalingChannel::OnReconnectionTicket(std::__1::basic_string, std::__1::allocator > const&)::$_14&&) in OWT(conferencesocketsignalingchannel.o) "std::__1::basic_streambuf >::uflow()", referenced from: vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(sdputils.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_value.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_reader.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_writer.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(common.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(int128.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(decision_logic.o) ... "std::__1::basic_string, std::__1::allocator > std::__1::operator+, std::__1::allocator >(char const*, std::__1::basic_string, std::__1::allocator > const&)", referenced from: owt::base::LocalStream::LocalStream(owt::base::LocalCameraStreamParameters const&, int&) in OWT(stream.o) owt::base::LocalStream::LocalStream(bool, webrtc::VideoTrackSourceInterface*, int&) in OWT(stream.o) rtc::LogSink::OnLogMessage(std::__1::basic_string, std::__1::allocator > const&, rtc::LoggingSeverity, char const*) in OWT(logging.o) owt::base::SdpUtils::SetPreferCodecs(std::__1::basic_string, std::__1::allocator > const&, std::__1::vector, std::__1::allocator >, std::__1::allocator, std::__1::allocator > > >&, bool, bool) in OWT(sdputils.o) owt::base::SdpUtils::GetCodecValues(std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator >&, bool) in OWT(sdputils.o) Json::Reader::getFormattedErrorMessages() const in OWT(json_reader.o) Json::OurReader::readObject(Json::OurReader::Token&) in OWT(json_reader.o) ... "std::__1::basic_string, std::__1::allocator >::compare(char const*) const", referenced from: webrtc::ParseContent(std::__1::basic_string, std::__1::allocator > const&, cricket::MediaType, int, std::__1::basic_string, std::__1::allocator > const&, std::__1::vector > const&, unsigned long*, std::__1::basic_string, std::__1::allocator >*, bool*, int*, cricket::MediaContentDescription*, cricket::TransportDescription*, std::__1::vector >, std::__1::allocator > > >*, webrtc::SdpParseError*) in OWT(webrtc_sdp.o) webrtc::ParseMsidAttribute(std::__1::basic_string, std::__1::allocator > const&, std::__1::vector, std::__1::allocator >, std::__1::allocator, std::__1::allocator > > >*, std::__1::basic_string, std::__1::allocator >*, webrtc::SdpParseError*) in OWT(webrtc_sdp.o) webrtc::StatsReport::Value::operator==(std::__1::basic_string, std::__1::allocator > const&) const in OWT(stats_types.o) webrtc::StatsReport::Value::operator==(char const*) const in OWT(stats_types.o) webrtc::(anonymous namespace)::ProduceIceCandidateStats(long long, cricket::Candidate const&, bool, std::__1::basic_string, std::__1::allocator > const&, webrtc::RTCStatsReport*) in OWT(rtc_stats_collector.o) "sio::client::close()", referenced from: owt::conference::ConferenceSocketSignalingChannel::Connect(std::__1::basic_string, std::__1::allocator > const&, std::__1::function)>, std::__1::function >)>)::$_3::operator()() const::'lambda0'(sio::message::list const&)::operator()(sio::message::list const&) const in OWT(conferencesocketsignalingchannel.o) owt::conference::ConferenceSocketSignalingChannel::Disconnect(std::__1::function, std::__1::function >)>)::$_5::operator()(sio::message::list const&) const in OWT(conferencesocketsignalingchannel.o) "std::__1::stoll(std::__1::basic_string, std::__1::allocator > const&, unsigned long*, int)", referenced from: owt::conference::ConferenceSocketSignalingChannel::OnReconnectionTicket(std::__1::basic_string, std::__1::allocator > const&) in OWT(conferencesocketsignalingchannel.o) "std::__1::basic_string, std::__1::allocator >::compare(unsigned long, unsigned long, char const*) const", referenced from: webrtc::GetServiceTypeAndHostnameFromUri(std::__1::basic_string, std::__1::allocator > const&, webrtc::ServiceType*, std::__1::basic_string, std::__1::allocator >*) in OWT(ice_server_parsing.o) webrtc::internal::ReceiveStatisticsProxy::UpdateDecodeTimeHistograms(int, int, int) const in OWT(receive_statistics_proxy2.o) "non-virtual thunk to std::__1::basic_iostream >::~basic_iostream()", referenced from: construction vtable for std::__1::basic_iostream >-in-std::__1::basic_stringstream, std::__1::allocator > in OWT(sdputils.o) "std::__1::thread::~thread()", referenced from: owt::conference::ConferenceSocketSignalingChannel::OnEmitAck(sio::message::list const&, std::__1::function, std::__1::function >)>) in OWT(conferencesocketsignalingchannel.o) owt::conference::ConferenceSocketSignalingChannel::OnReconnectionTicket(std::__1::basic_string, std::__1::allocator > const&) in OWT(conferencesocketsignalingchannel.o) "std::__1::basic_string, std::__1::allocator >::operator=(std::__1::basic_string, std::__1::allocator > const&)", referenced from: owt::base::IceServer::operator=(owt::base::IceServer const&) in OWT(OWTConferenceClient.o) std::__1::basic_string, std::__1::allocator >* std::__1::__copy_constexpr, std::__1::allocator >*, std::__1::basic_string, std::__1::allocator >*>(std::__1::basic_string, std::__1::allocator >*, std::__1::basic_string, std::__1::allocator >*, std::__1::basic_string, std::__1::allocator >*) in OWT(OWTConferenceClient.o) owt::conference::VideoSubscriptionConstraints::operator=(owt::conference::VideoSubscriptionConstraints const&) in OWT(OWTConferenceSubscription.o) owt::base::VideoCodecParameters::operator=(owt::base::VideoCodecParameters const&) in OWT(OWTConferenceSubscription.o) owt::conference::ConferenceClient::GetPeerConnectionChannelConfiguration() const in OWT(conferenceclient.o) owt::conference::ConferenceClient::OnStreamId(std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&) in OWT(conferenceclient.o) owt::conference::ConferenceClient::OnSubscriptionId(std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&) in OWT(conferenceclient.o) ... "sio::client::set_open_listener(std::__1::function const&)", referenced from: owt::conference::ConferenceSocketSignalingChannel::Connect(std::__1::basic_string, std::__1::allocator > const&, std::__1::function)>, std::__1::function >)>) in OWT(conferencesocketsignalingchannel.o) "sio::client::set_reconnect_attempts(int)", referenced from: owt::conference::ConferenceSocketSignalingChannel::Connect(std::__1::basic_string, std::__1::allocator > const&, std::__1::function)>, std::__1::function >)>) in OWT(conferencesocketsignalingchannel.o) owt::conference::ConferenceSocketSignalingChannel::OnNotificationFromServer(std::__1::basic_string, std::__1::allocator > const&, std::__1::shared_ptr const&) in OWT(conferencesocketsignalingchannel.o) "std::__1::basic_iostream >::~basic_iostream()", referenced from: std::__1::basic_stringstream, std::__1::allocator >::~basic_stringstream() in OWT(sdputils.o) "sio::client::set_socket_close_listener(std::__1::function, std::__1::allocator > const&)> const&)", referenced from: owt::conference::ConferenceSocketSignalingChannel::Connect(std::__1::basic_string, std::__1::allocator > const&, std::__1::function)>, std::__1::function >)>) in OWT(conferencesocketsignalingchannel.o) "std::__1::basic_ostream >::operator<<(unsigned long long)", referenced from: google::protobuf::operator<<(std::__1::basic_ostream >&, google::protobuf::uint128 const&) in OWT(int128.o) "std::__1::basic_streambuf >::showmanyc()", referenced from: vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(sdputils.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_value.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_reader.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(json_writer.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(common.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(int128.o) vtable for std::__1::basic_stringbuf, std::__1::allocator > in OWT(decision_logic.o) ... "virtual thunk to std::__1::basic_iostream >::~basic_iostream()", referenced from: construction vtable for std::__1::basic_iostream >-in-std::__1::basic_stringstream, std::__1::allocator > in OWT(sdputils.o) "std::__1::mutex::unlock()", referenced from: std::__1::lock_guard::~lock_guard() in OWT(conferenceclient.o) std::__1::lock_guard::~lock_guard() in OWT(ConferenceClientObserverObjcImpl.o) std::__1::lock_guard::~lock_guard() in OWT(conferencepublication.o) std::__1::lock_guard::~lock_guard() in OWT(conferencesubscription.o) std::__1::lock_guard::~lock_guard() in OWT(conferencepeerconnectionchannel.o) std::__1::lock_guard::~lock_guard() in OWT(conferencesocketsignalingchannel.o) std::__1::lock_guard::~lock_guard() in OWT(stream.o) ... "std::__1::basic_ostream >::put(char)", referenced from: std::__1::basic_ostream >& std::__1::endl >(std::__1::basic_ostream >&) in OWT(json_value.o) "std::__1::__get_collation_name(char const*)", referenced from: std::__1::basic_string, std::__1::allocator > std::__1::regex_traits::__lookup_collatename(char*, char*, char) const in OWT(sdputils.o) std::__1::basic_string, std::__1::allocator > std::__1::regex_traits::__lookup_collatename >(std::__1::__wrap_iter, std::__1::__wrap_iter, char) const in OWT(sdputils.o) std::__1::basic_string, std::__1::allocator > std::__1::regex_traits::__lookup_collatename(char const*, char const*, char) const in OWT(sdputils.o) "sio::socket::on(std::__1::basic_string, std::__1::allocator > const&, std::__1::function, std::__1::allocator > const&, std::__1::shared_ptr const&, bool, sio::message::list&)> const&)", referenced from: owt::conference::ConferenceSocketSignalingChannel::Connect(std::__1::basic_string, std::__1::allocator > const&, std::__1::function)>, std::__1::function >)>) in OWT(conferencesocketsignalingchannel.o) "std::__1::basic_string, std::__1::allocator >::append(char const*)", referenced from: rtc::webrtc_checks_impl::ParseArg(char**, rtc::webrtc_checks_impl::CheckArgType const**, std::__1::basic_string, std::__1::allocator >*) in OWT(checks.o) rtc::webrtc_checks_impl::FatalLog(char const*, int, char const*, rtc::webrtc_checks_impl::CheckArgType const*, ...) in OWT(checks.o) std::__1::basic_string, std::__1::allocator >::operator+=(char const*) in OWT(peerconnectiondependencyfactory.o) std::__1::basic_string, std::__1::allocator > std::__1::operator+, std::__1::allocator >(std::__1::basic_string, std::__1::allocator >&&, char const*) in OWT(sdputils.o) std::__1::basic_string, std::__1::allocator > std::__1::operator+, std::__1::allocator >(std::__1::basic_string, std::__1::allocator >&&, char const*) in OWT(json_reader.o) std::__1::basic_string, std::__1::allocator > std::__1::operator+, std::__1::allocator >(std::__1::basic_string, std::__1::allocator >&&, char const*) in OWT(socket_address.o) std::__1::basic_string, std::__1::allocator >::operator+=(char const*) in OWT(thread.o) ... "sio::client::connect(std::__1::basic_string, std::__1::allocator > const&)", referenced from: owt::conference::ConferenceSocketSignalingChannel::Connect(std::__1::basic_string, std::__1::allocator > const&, std::__1::function)>, std::__1::function >)>) in OWT(conferencesocketsignalingchannel.o) "std::__1::basic_string, std::__1::allocator >::resize(unsigned long, char)", referenced from: std::__1::basic_string, std::__1::allocator >::resize(unsigned long) in OWT(checks.o) std::__1::basic_string, std::__1::allocator >::resize(unsigned long) in OWT(base64.o) std::__1::basic_string, std::__1::allocator >::resize(unsigned long) in OWT(sdputils.o) std::__1::basic_string, std::__1::allocator >::resize(unsigned long) in OWT(helpers.o) std::__1::basic_string, std::__1::allocator >::resize(unsigned long) in OWT(string_builder.o) std::__1::basic_string, std::__1::allocator >::resize(unsigned long) in OWT(json_value.o) std::__1::basic_string, std::__1::allocator >::resize(unsigned long) in OWT(json_reader.o) ... "sio::client::client()", referenced from: owt::conference::ConferenceSocketSignalingChannel::ConferenceSocketSignalingChannel() in OWT(conferencesocketsignalingchannel.o) "sio::client::opened() const", referenced from: owt::conference::ConferenceSocketSignalingChannel::Disconnect(std::__1::function, std::__1::function >)>) in OWT(conferencesocketsignalingchannel.o) "std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from: std::__1::ctype const& std::__1::use_facet >(std::__1::locale const&) in OWT(sdputils.o) std::__1::collate const& std::__1::use_facet >(std::__1::locale const&) in OWT(sdputils.o) std::__1::ctype const& std::__1::use_facet >(std::__1::locale const&) in OWT(json_value.o) std::__1::ctype const& std::__1::use_facet >(std::__1::locale const&) in OWT(json_writer.o) std::__1::ctype const& std::__1::use_facet >(std::__1::locale const&) in OWT(string_view.o) std::__1::ctype const& std::__1::use_facet >(std::__1::locale const&) in OWT(int128.o) std::__1::ctype const& std::__1::use_facet >(std::__1::locale const&) in OWT(status.o) ... "std::__1::__vector_base_common::__throw_length_error() const", referenced from: std::__1::vector, std::__1::allocator >, std::__1::allocator, std::__1::allocator > > >::__vallocate(unsigned long) in OWT(OWTConferenceClient.o) std::__1::vector >::__recommend(unsigned long) const in OWT(OWTConferenceClient.o) std::__1::vector >::__vallocate(unsigned long) in OWT(OWTConferenceClient.o) std::__1::vector, std::__1::allocator >, std::__1::allocator, std::__1::allocator > > >::__recommend(unsigned long) const in OWT(OWTConferenceClient.o) std::__1::vector, std::__1::allocator > >::__vallocate(unsigned long) in OWT(OWTConferenceInfo.o) std::__1::vector, std::__1::allocator > >::__vallocate(unsigned long) in OWT(OWTConferenceInfo.o) std::__1::vector >::__vallocate(unsigned long) in OWT(OWTConferenceSubscription.o) ... "std::__1::basic_string, std::__1::allocator >::__init(char const*, unsigned long, unsigned long)", referenced from: std::__1::basic_string, std::__1::allocator > std::__1::operator+, std::__1::allocator >(std::__1::basic_string, std::__1::allocator > const&, char) in OWT(field_trial.o) std::__1::basic_string, std::__1::allocator > std::__1::operator+, std::__1::allocator >(std::__1::basic_string, std::__1::allocator > const&, char const*) in OWT(call_factory.o) std::__1::basic_string, std::__1::allocator > std::__1::operator+, std::__1::allocator >(std::__1::basic_string, std::__1::allocator > const&, char const*) in OWT(http_common.o) std::__1::basic_string, std::__1::allocator > std::__1::operator+, std::__1::allocator >(std::__1::basic_string, std::__1::allocator > const&, char const*) in OWT(peer_connection.o) std::__1::basic_string, std::__1::allocator > std::__1::operator+, std::__1::allocator >(std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&) in OWT(rtc_event_log_impl.o) std::__1::basic_string, std::__1::allocator > std::__1::operator+, std::__1::allocator >(std::__1::basic_string, std::__1::allocator > const&, char const*) in OWT(send_statistics_proxy.o) std::__1::basic_string, std::__1::allocator > std::__1::operator+, std::__1::allocator >(std::__1::basic_string, std::__1::allocator > const&, char const*) in OWT(receive_statistics_proxy2.o) ... "___cxa_begin_catch", referenced from: ___clang_call_terminate in OWT(OWTConferenceParticipant.o) "sio::client::socket(std::__1::basic_string, std::__1::allocator > const&)", referenced from: owt::conference::ConferenceSocketSignalingChannel::Connect(std::__1::basic_string, std::__1::allocator > const&, std::__1::function)>, std::__1::function >)>) in OWT(conferencesocketsignalingchannel.o) owt::conference::ConferenceSocketSignalingChannel::Disconnect(std::__1::function, std::__1::function >)>) in OWT(conferencesocketsignalingchannel.o) owt::conference::ConferenceSocketSignalingChannel::Emit(std::__1::basic_string, std::__1::allocator > const&, sio::message::list const&, std::__1::function, std::__1::function >)>) in OWT(conferencesocketsignalingchannel.o) owt::conference::ConferenceSocketSignalingChannel::RefreshReconnectionTicket() in OWT(conferencesocketsignalingchannel.o) owt::conference::ConferenceSocketSignalingChannel::Connect(std::__1::basic_string, std::__1::allocator > const&, std::__1::function)>, std::__1::function >)>)::$_3::operator()() const in OWT(conferencesocketsignalingchannel.o) "std::__1::basic_string, std::__1::allocator >::__init(char const*, unsigned long)", referenced from: std::__1::basic_string, std::__1::allocator >::basic_string(char const*) in OWT(OWTConferenceClient.o) std::__1::basic_string, std::__1::allocator >::basic_string(char const*) in OWT(OWTConferenceSubscription.o) std::__1::basic_string, std::__1::allocator >::basic_string(char const*) in OWT(conferenceclient.o) std::__1::basic_string, std::__1::allocator >::basic_string(char const*) in OWT(exception.o) std::__1::basic_string, std::__1::allocator >::basic_string(char const*) in OWT(OWTMediaFormat.o) std::__1::basic_string, std::__1::allocator >::basic_string(char const*) in OWT(conferencepublication.o) std::__1::basic_string, std::__1::allocator >::basic_string(char const*) in OWT(conferencesubscription.o) ... "std::__1::basic_string, std::__1::allocator >::find(char const*, unsigned long, unsigned long) const", referenced from: google::protobuf::GlobalReplaceSubstring(std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator >*) in OWT(strutil.o) "std::terminate()", referenced from: ___clang_call_terminate in OWT(OWTConferenceParticipant.o) "virtual thunk to std::__1::basic_iostream >::~basic_iostream()", referenced from: construction vtable for std::__1::basic_iostream >-in-std::__1::basic_stringstream, std::__1::allocator > in OWT(sdputils.o) "std::__1::basic_istream >::~basic_istream()", referenced from: construction vtable for std::__1::basic_istream >-in-std::__1::basic_stringstream, std::__1::allocator > in OWT(sdputils.o) construction vtable for std::__1::basic_istream >-in-std::__1::basic_istringstream, std::__1::allocator > in OWT(json_reader.o) "___cxa_guard_abort", referenced from: InitCocoaMultiThreading() in OWT(cocoa_threading.o) "std::__1::mutex::~mutex()", referenced from: owt::conference::ConferenceClient::~ConferenceClient() in OWT(conferenceclient.o) owt::conference::Participant::~Participant() in OWT(conferenceclient.o) owt::conference::ConferenceInfo::~ConferenceInfo() in OWT(conferenceclient.o) owt::conference::ConferenceClientObserverObjcImpl::~ConferenceClientObserverObjcImpl() in OWT(ConferenceClientObserverObjcImpl.o) owt::conference::ConferencePublication::~ConferencePublication() in OWT(conferencepublication.o) owt::conference::ConferenceSubscription::~ConferenceSubscription() in OWT(conferencesubscription.o) owt::conference::ConferencePeerConnectionChannel::~ConferencePeerConnectionChannel() in OWT(conferencepeerconnectionchannel.o) ... "std::__1::__shared_weak_count::lock()", referenced from: std::__1::shared_ptr::shared_ptr(std::__1::weak_ptr const&, std::__1::enable_if::value, std::__1::shared_ptr::__nat>::type) in OWT(conferenceclient.o) std::__1::weak_ptr::lock() const in OWT(conferenceclient.o) std::__1::weak_ptr::lock() const in OWT(conferencepublication.o) std::__1::weak_ptr::lock() const in OWT(conferencesubscription.o) std::__1::shared_ptr::shared_ptr(std::__1::weak_ptr const&, std::__1::enable_if::value, std::__1::shared_ptr::__nat>::type) in OWT(conferencesubscription.o) std::__1::weak_ptr::lock() const in OWT(conferencesubscription.o) std::__1::shared_ptr::shared_ptr(std::__1::weak_ptr const&, std::__1::enable_if::value, std::__1::shared_ptr::__nat>::type) in OWT(conferencepeerconnectionchannel.o) ... "std::__1::mutex::lock()", referenced from: std::__1::lock_guard::lock_guard(std::__1::mutex&) in OWT(conferenceclient.o) std::__1::lock_guard::lock_guard(std::__1::mutex&) in OWT(ConferenceClientObserverObjcImpl.o) std::__1::lock_guard::lock_guard(std::__1::mutex&) in OWT(conferencepublication.o) std::__1::lock_guard::lock_guard(std::__1::mutex&) in OWT(conferencesubscription.o) std::__1::lock_guard::lock_guard(std::__1::mutex&) in OWT(conferencepeerconnectionchannel.o) std::__1::lock_guard::lock_guard(std::__1::mutex&) in OWT(conferencesocketsignalingchannel.o) std::__1::lock_guard::lock_guard(std::__1::mutex&) in OWT(stream.o) ... "vtable for std::__1::__shared_count", referenced from: std::__1::__shared_count::__shared_count(long) in OWT(OWTConferenceSubscription.o) std::__1::__shared_count::__shared_count(long) in OWT(conferenceclient.o) std::__1::__shared_count::__shared_count(long) in OWT(OWTMediaFormat.o) std::__1::__shared_count::__shared_count(long) in OWT(conferencepeerconnectionchannel.o) std::__1::__shared_count::__shared_count(long) in OWT(conferencesocketsignalingchannel.o) std::__1::__shared_count::__shared_count(long) in OWT(stream.o) std::__1::__shared_count::__shared_count(long) in OWT(OWTStream.o) ... NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. "operator delete(void*)", referenced from: -[OWTConferenceClient initWithConfiguration:] in OWT(OWTConferenceClient.o) -[OWTConferenceClient setDelegate:] in OWT(OWTConferenceClient.o) std::__1::_DeallocateCaller::__do_call(void*) in OWT(OWTConferenceClient.o) std::__1::__function::__func<-[OWTConferenceClient joinWithToken:onSuccess:onFailure:]::$_1, std::__1::allocator<-[OWTConferenceClient joinWithToken:onSuccess:onFailure:]::$_1>, void (std::__1::shared_ptr)>::~__func() in OWT(OWTConferenceClient.o) std::__1::__function::__func<-[OWTConferenceClient joinWithToken:onSuccess:onFailure:]::$_2, std::__1::allocator<-[OWTConferenceClient joinWithToken:onSuccess:onFailure:]::$_2>, void (std::__1::unique_ptr >)>::~__func() in OWT(OWTConferenceClient.o) std::__1::__function::__func<-[OWTConferenceClient publish:withOptions:onSuccess:onFailure:]::$_3, std::__1::allocator<-[OWTConferenceClient publish:withOptions:onSuccess:onFailure:]::$_3>, void (std::__1::shared_ptr)>::~__func() in OWT(OWTConferenceClient.o) std::__1::__function::__func<-[OWTConferenceClient publish:withOptions:onSuccess:onFailure:]::$_4, std::__1::allocator<-[OWTConferenceClient publish:withOptions:onSuccess:onFailure:]::$_4>, void (std::__1::unique_ptr >)>::~__func() in OWT(OWTConferenceClient.o) ... "std::__1::basic_string, std::__1::allocator >::insert(unsigned long, char const*)", referenced from: std::__1::basic_string, std::__1::allocator > std::__1::operator+, std::__1::allocator >(char const*, std::__1::basic_string, std::__1::allocator >&&) in OWT(conferenceclient.o) owt::conference::ConferencePeerConnectionChannel::OnIceCandidate(webrtc::IceCandidateInterface const*) in OWT(conferencepeerconnectionchannel.o) owt::conference::ConferencePeerConnectionChannel::OnIceCandidatesRemoved(std::__1::vector > const&) in OWT(conferencepeerconnectionchannel.o) std::__1::basic_string, std::__1::allocator > std::__1::operator+, std::__1::allocator >(char const*, std::__1::basic_string, std::__1::allocator >&&) in OWT(conferencepeerconnectionchannel.o) std::__1::basic_string, std::__1::allocator > std::__1::operator+, std::__1::allocator >(char const*, std::__1::basic_string, std::__1::allocator >&&) in OWT(stream.o) std::__1::basic_string, std::__1::allocator > std::__1::operator+, std::__1::allocator >(char const*, std::__1::basic_string, std::__1::allocator >&&) in OWT(logging.o) std::__1::basic_string, std::__1::allocator > std::__1::operator+, std::__1::allocator >(char const*, std::__1::basic_string, std::__1::allocator >&&) in OWT(peerconnectiondependencyfactory.o) ... "std::__1::basic_string, std::__1::allocator >::assign(char const*)", referenced from: std::__1::basic_string, std::__1::allocator >::operator=(char const*) in OWT(conferenceclient.o) std::__1::basic_string, std::__1::allocator >::operator=(char const*) in OWT(conferencesocketsignalingchannel.o) std::__1::basic_string, std::__1::allocator >::operator=(char const*) in OWT(logging.o) std::__1::basic_string, std::__1::allocator >::operator=(char const*) in OWT(sdputils.o) std::__1::basic_string, std::__1::allocator >::operator=(char const*) in OWT(json_writer.o) std::__1::basic_string, std::__1::allocator >::operator=(char const*) in OWT(webrtc_sdp.o) webrtc::GetDefaultDestination(std::__1::vector > const&, int, std::__1::basic_string, std::__1::allocator >*, std::__1::basic_string, std::__1::allocator >*, std::__1::basic_string, std::__1::allocator >*) in OWT(webrtc_sdp.o) ... "std::__1::basic_istream >::operator>>(double&)", referenced from: Json::Reader::decodeDouble(Json::Reader::Token&, Json::Value&) in OWT(json_reader.o) Json::OurReader::decodeDouble(Json::OurReader::Token&, Json::Value&) in OWT(json_reader.o) "std::__1::locale::locale(std::__1::locale const&)", referenced from: std::__1::regex_traits::regex_traits(std::__1::regex_traits const&) in OWT(sdputils.o) std::__1::regex_traits::getloc() const in OWT(sdputils.o) "vtable for std::__1::__shared_weak_count", referenced from: std::__1::__shared_weak_count::__shared_weak_count(long) in OWT(OWTConferenceSubscription.o) std::__1::__shared_weak_count::__shared_weak_count(long) in OWT(conferenceclient.o) std::__1::__shared_weak_count::__shared_weak_count(long) in OWT(OWTMediaFormat.o) std::__1::__shared_weak_count::__shared_weak_count(long) in OWT(conferencepeerconnectionchannel.o) std::__1::__shared_weak_count::__shared_weak_count(long) in OWT(conferencesocketsignalingchannel.o) std::__1::__shared_weak_count::__shared_weak_count(long) in OWT(stream.o) std::__1::__shared_weak_count::__shared_weak_count(long) in OWT(OWTStream.o) ... NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. "std::__1::basic_istream >::~basic_istream()", referenced from: std::__1::basic_istringstream, std::__1::allocator >::~basic_istringstream() in OWT(json_reader.o) "std::__1::stod(std::__1::basic_string, std::__1::allocator > const&, unsigned long*)", referenced from: owt::conference::ConferenceClient::ParseStreamInfo(std::__1::shared_ptr, bool) in OWT(conferenceclient.o) "std::__1::chrono::system_clock::now()", referenced from: owt::base::ConnectionStats::ConnectionStats() in OWT(functionalobserver.o) "std::__1::locale::name() const", referenced from: std::__1::__bracket_expression >::__bracket_expression(std::__1::regex_traits const&, std::__1::__node*, bool, bool, bool) in OWT(sdputils.o) "std::__1::basic_ostream >::~basic_ostream()", referenced from: construction vtable for std::__1::basic_ostream >-in-std::__1::basic_stringstream, std::__1::allocator > in OWT(sdputils.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(json_value.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(json_reader.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(json_writer.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(common.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(int128.o) construction vtable for std::__1::basic_ostream >-in-std::__1::basic_ostringstream, std::__1::allocator > in OWT(decision_logic.o) ... "std::__1::__shared_weak_count::__release_weak()", referenced from: std::__1::__shared_weak_count::__release_shared() in OWT(OWTConferenceClient.o) std::__1::__shared_weak_count::__release_shared() in OWT(OWTConferenceInfo.o) std::__1::__shared_weak_count::__release_shared() in OWT(OWTConferencePublication.o) std::__1::__shared_weak_count::__release_shared() in OWT(OWTConferenceSubscription.o) std::__1::__shared_weak_count::__release_shared() in OWT(conferenceclient.o) std::__1::weak_ptr::~weak_ptr() in OWT(conferenceclient.o) std::__1::weak_ptr::~weak_ptr() in OWT(conferenceclient.o) ... "___cxa_guard_release", referenced from: sio::message::get_string() const in OWT(conferenceclient.o) sio::message::get_binary() const in OWT(conferenceclient.o) sio::message::get_vector() const in OWT(conferenceclient.o) sio::message::get_vector() in OWT(conferenceclient.o) sio::message::get_map() const in OWT(conferenceclient.o) sio::message::get_map() in OWT(conferenceclient.o) sio::message::get_string() const in OWT(conferencepeerconnectionchannel.o) ... "std::__1::basic_streambuf >::~basic_streambuf()", referenced from: std::__1::basic_stringbuf, std::__1::allocator >::~basic_stringbuf() in OWT(sdputils.o) std::__1::basic_stringbuf, std::__1::allocator >::~basic_stringbuf() in OWT(json_value.o) std::__1::basic_stringbuf, std::__1::allocator >::~basic_stringbuf() in OWT(json_reader.o) std::__1::basic_stringbuf, std::__1::allocator >::~basic_stringbuf() in OWT(json_writer.o) std::__1::basic_stringbuf, std::__1::allocator >::~basic_stringbuf() in OWT(common.o) std::__1::basic_stringbuf, std::__1::allocator >::~basic_stringbuf() in OWT(int128.o) std::__1::basic_stringbuf, std::__1::allocator >::~basic_stringbuf() in OWT(decision_logic.o) ... "___gxx_personality_v0", referenced from: -[OWTConferenceClient initWithConfiguration:] in OWT(OWTConferenceClient.o) -[OWTConferenceClient triggerOnFailure:withException:] in OWT(OWTConferenceClient.o) -[OWTConferenceClient joinWithToken:onSuccess:onFailure:] in OWT(OWTConferenceClient.o) -[OWTConferenceClient publish:withOptions:onSuccess:onFailure:] in OWT(OWTConferenceClient.o) -[OWTConferenceClient subscribe:onSuccess:onFailure:] in OWT(OWTConferenceClient.o) -[OWTConferenceClient subscribe:withOptions:onSuccess:onFailure:] in OWT(OWTConferenceClient.o) -[OWTConferenceClient send:onSuccess:onFailure:] in OWT(OWTConferenceClient.o) ... "std::__1::basic_string, std::__1::allocator >::basic_string(std::__1::basic_string, std::__1::allocator > const&, unsigned long, unsigned long, std::__1::allocator const&)", referenced from: std::__1::basic_string, std::__1::allocator >::substr(unsigned long, unsigned long) const in OWT(conferenceclient.o) std::__1::basic_string, std::__1::allocator >::substr(unsigned long, unsigned long) const in OWT(conferencepeerconnectionchannel.o) std::__1::basic_string, std::__1::allocator >::substr(unsigned long, unsigned long) const in OWT(json.o) std::__1::basic_string, std::__1::allocator >::substr(unsigned long, unsigned long) const in OWT(string_utils.o) std::__1::basic_string, std::__1::allocator >::substr(unsigned long, unsigned long) const in OWT(string_encode.o) webrtc::field_trial::FindFullName(std::__1::basic_string, std::__1::allocator > const&) in OWT(field_trial.o) std::__1::basic_string, std::__1::allocator >::substr(unsigned long, unsigned long) const in OWT(socket_address.o) ... "std::__1::thread::detach()", referenced from: owt::conference::ConferenceSocketSignalingChannel::OnEmitAck(sio::message::list const&, std::__1::function, std::__1::function >)>) in OWT(conferencesocketsignalingchannel.o) owt::conference::ConferenceSocketSignalingChannel::OnReconnectionTicket(std::__1::basic_string, std::__1::allocator > const&) in OWT(conferencesocketsignalingchannel.o) "std::__1::ctype::id", referenced from: std::__1::ctype const& std::__1::use_facet >(std::__1::locale const&) in OWT(sdputils.o) std::__1::ctype const& std::__1::use_facet >(std::__1::locale const&) in OWT(json_value.o) std::__1::ctype const& std::__1::use_facet >(std::__1::locale const&) in OWT(json_writer.o) std::__1::ctype const& std::__1::use_facet >(std::__1::locale const&) in OWT(string_view.o) std::__1::ctype const& std::__1::use_facet >(std::__1::locale const&) in OWT(int128.o) std::__1::ctype const& std::__1::use_facet >(std::__1::locale const&) in OWT(status.o) "std::__1::basic_string, std::__1::allocator >::~basic_string()", referenced from: -[OWTConferenceClient triggerOnFailure:withException:] in OWT(OWTConferenceClient.o) -[OWTConferenceClient joinWithToken:onSuccess:onFailure:] in OWT(OWTConferenceClient.o) -[OWTConferenceClient send:onSuccess:onFailure:] in OWT(OWTConferenceClient.o) -[OWTConferenceClient send:to:onSuccess:onFailure:] in OWT(OWTConferenceClient.o) owt::base::IceServer::~IceServer() in OWT(OWTConferenceClient.o) std::__1::allocator, std::__1::allocator > >::destroy(std::__1::basic_string, std::__1::allocator >*) in OWT(OWTConferenceClient.o) owt::base::IceServer::IceServer(owt::base::IceServer const&) in OWT(OWTConferenceClient.o) ... "std::__1::basic_string, std::__1::allocator >::operator=(char)", referenced from: std::__1::__wrap_iter std::__1::basic_regex >::__parse_character_escape >(std::__1::__wrap_iter, std::__1::__wrap_iter, std::__1::basic_string, std::__1::allocator >*) in OWT(sdputils.o) std::__1::__wrap_iter std::__1::basic_regex >::__parse_expression_term >(std::__1::__wrap_iter, std::__1::__wrap_iter, std::__1::__bracket_expression >*) in OWT(sdputils.o) std::__1::__wrap_iter std::__1::basic_regex >::__parse_class_escape >(std::__1::__wrap_iter, std::__1::__wrap_iter, std::__1::basic_string, std::__1::allocator >&, std::__1::__bracket_expression >*) in OWT(sdputils.o) std::__1::__wrap_iter std::__1::basic_regex >::__parse_awk_escape >(std::__1::__wrap_iter, std::__1::__wrap_iter, std::__1::basic_string, std::__1::allocator >*) in OWT(sdputils.o) char const* std::__1::basic_regex >::__parse_character_escape(char const*, char const*, std::__1::basic_string, std::__1::allocator >*) in OWT(sdputils.o) char const* std::__1::basic_regex >::__parse_expression_term(char const*, char const*, std::__1::__bracket_expression >*) in OWT(sdputils.o) char const* std::__1::basic_regex >::__parse_class_escape(char const*, char const*, std::__1::basic_string, std::__1::allocator >&, std::__1::__bracket_expression >*) in OWT(sdputils.o) ... "std::__1::basic_string, std::__1::allocator >::erase(unsigned long, unsigned long)", referenced from: std::__1::basic_string, std::__1::allocator >::erase(std::__1::__wrap_iter, std::__1::__wrap_iter) in OWT(json_writer.o) webrtc::SdpSerializeCandidate(cricket::Candidate const&) in OWT(webrtc_sdp.o) absl::RemoveExtraAsciiWhitespace(std::__1::basic_string, std::__1::allocator >*) in OWT(ascii.o) google::protobuf::StripWhitespace(std::__1::basic_string, std::__1::allocator >*) in OWT(strutil.o) google::protobuf::Base64UnescapeInternal(char const*, int, std::__1::basic_string, std::__1::allocator >*, signed char const*) in OWT(strutil.o) google::protobuf::Base64EscapeInternal(unsigned char const*, int, std::__1::basic_string, std::__1::allocator >*, bool, char const*) in OWT(strutil.o) webrtc::DtmfSender::DoInsertDtmf() in OWT(dtmf_sender.o) ... "std::__1::to_string(int)", referenced from: owt::base::PeerConnectionDependencyFactory::CreatePeerConnectionFactoryOnCurrentThread() in OWT(peerconnectiondependencyfactory.o) rtc::SocketAddress::PortAsString() const in OWT(socket_address.o) cricket::StunMethodToString(int) in OWT(stun.o) std::__1::vector > cricket::MatchCodecPreference > >(std::__1::vector > const&, std::__1::vector > const&) in OWT(media_session.o) std::__1::vector > cricket::MatchCodecPreference > >(std::__1::vector > const&, std::__1::vector > const&) in OWT(media_session.o) cricket::IceControllerEvent::ToString() const in OWT(ice_controller_interface.o) webrtc::VideoStreamEncoder::ParseEncoderSwitchFieldTrial() const in OWT(video_stream_encoder.o) ... "std::__1::locale::~locale()", referenced from: std::__1::regex_traits::~regex_traits() in OWT(sdputils.o) std::__1::__bracket_expression >::__bracket_expression(std::__1::regex_traits const&, std::__1::__node*, bool, bool, bool) in OWT(sdputils.o) std::__1::basic_ios >::widen(char) const in OWT(sdputils.o) std::__1::basic_ios >::widen(char) const in OWT(json_value.o) std::__1::basic_ios >::widen(char) const in OWT(json_writer.o) std::__1::basic_ios >::widen(char) const in OWT(string_view.o) std::__1::basic_ios >::widen(char) const in OWT(int128.o) ... "std::__1::to_string(double)", referenced from: owt::conference::ConferenceClient::UpdateSubscription(std::__1::basic_string, std::__1::allocator > const&, std::__1::basic_string, std::__1::allocator > const&, owt::conference::SubscriptionUpdateOptions const&, std::__1::function, std::__1::function >)>) in OWT(conferenceclient.o) owt::conference::ConferencePeerConnectionChannel::Subscribe(std::__1::shared_ptr, owt::conference::SubscribeOptions const&, std::__1::function, std::__1::allocator >)>, std::__1::function >)>) in OWT(conferencepeerconnectionchannel.o) "std::__1::to_string(unsigned int)", referenced from: cricket::WebRtcVideoChannel::BackfillBufferedPackets(rtc::ArrayView) in OWT(webrtc_video_engine.o) cricket::BaseChannel::UpdateRemoteStreams_w(std::__1::vector > const&, webrtc::SdpType, std::__1::basic_string, std::__1::allocator >*) in OWT(channel.o) "std::__1::this_thread::sleep_for(std::__1::chrono::duration > const&)", referenced from: void std::__1::this_thread::sleep_for >(std::__1::chrono::duration > const&) in OWT(conferencesocketsignalingchannel.o) "std::__1::basic_string, std::__1::allocator >::basic_string(std::__1::basic_string, std::__1::allocator > const&)", referenced from: owt::base::IceServer::IceServer(owt::base::IceServer const&) in OWT(OWTConferenceClient.o) void std::__1::allocator, std::__1::allocator > >::construct, std::__1::allocator >, std::__1::basic_string, std::__1::allocator >&>(std::__1::basic_string, std::__1::allocator >*, std::__1::basic_string, std::__1::allocator >&) in OWT(OWTConferenceClient.o) owt::conference::ConferenceInfo::Id() const in OWT(OWTConferenceInfo.o) owt::conference::ConferencePublication::Id() const in OWT(OWTConferencePublication.o) owt::conference::ConferenceSubscription::Id() const in OWT(OWTConferenceSubscription.o) owt::base::VideoCodecParameters::VideoCodecParameters(owt::base::VideoCodecParameters const&) in OWT(OWTConferenceSubscription.o) owt::conference::VideoSubscriptionConstraints::VideoSubscriptionConstraints(owt::conference::VideoSubscriptionConstraints const&) in OWT(OWTConferenceSubscription.o) ... "std::__1::basic_ostream >::write(char const*, long)", referenced from: absl::operator<<(std::__1::basic_ostream >&, absl::string_view) in OWT(string_view.o) absl::(anonymous namespace)::WritePadding(std::__1::basic_ostream >&, unsigned long) in OWT(string_view.o) google::protobuf::operator<<(std::__1::basic_ostream >&, google::protobuf::StringPiece) in OWT(stringpiece.o) google::protobuf::io::OstreamOutputStream::CopyingOstreamOutputStream::Write(void const*, int) in OWT(zero_copy_stream_impl.o) "std::__1::basic_string, std::__1::allocator >::__init(unsigned long, char)", referenced from: std::__1::basic_string, std::__1::allocator >::basic_string(unsigned long, char) in OWT(sdputils.o) std::__1::basic_string, std::__1::allocator >::basic_string(unsigned long, char) in OWT(string_encode.o) std::__1::basic_string, std::__1::allocator >::basic_string(unsigned long, char) in OWT(json_writer.o) std::__1::basic_string, std::__1::allocator >::basic_string(unsigned long, char) in OWT(webrtc_sdp.o) std::__1::basic_string, std::__1::allocator >::basic_string(unsigned long, char) in OWT(stun.o) std::__1::basic_string, std::__1::allocator >::basic_string(unsigned long, char) in OWT(delta_encoding.o) std::__1::basic_string, std::__1::allocator >::basic_string(unsigned long, char) in OWT(scalability_structure_full_svc.o) ... "std::__1::basic_string, std::__1::allocator >::push_back(char)", referenced from: bool rtc::Base64::DecodeFromArrayTemplate, std::__1::allocator > >(char const*, unsigned long, int, std::__1::basic_string, std::__1::allocator >*, unsigned long*) in OWT(base64.o) std::__1::basic_istream >& std::__1::getline, std::__1::allocator >(std::__1::basic_istream >&, std::__1::basic_string, std::__1::allocator >&, char) in OWT(sdputils.o) std::__1::basic_stringbuf, std::__1::allocator >::overflow(int) in OWT(sdputils.o) std::__1::back_insert_iterator, std::__1::allocator > >::operator=(char const&) in OWT(sdputils.o) rtc::CreateRandomString(unsigned long, char const*, int, std::__1::basic_string, std::__1::allocator >*) in OWT(helpers.o) rtc::CreateRandomUuid() in OWT(helpers.o) std::__1::basic_string, std::__1::allocator >::operator+=(char) in OWT(string_encode.o) ... "std::__1::basic_string, std::__1::allocator >::compare(unsigned long, unsigned long, char const*, unsigned long) const", referenced from: bool std::__1::operator==, std::__1::allocator >(std::__1::basic_string, std::__1::allocator > const&, char const*) in OWT(conferenceclient.o) bool std::__1::operator==, std::__1::allocator >(std::__1::basic_string, std::__1::allocator > const&, char const*) in OWT(conferencepeerconnectionchannel.o) bool std::__1::operator==, std::__1::allocator >(std::__1::basic_string, std::__1::allocator > const&, char const*) in OWT(conferencesocketsignalingchannel.o) bool std::__1::operator==, std::__1::allocator >(std::__1::basic_string, std::__1::allocator > const&, char const*) in OWT(peerconnectionchannel.o) bool std::__1::operator==, std::__1::allocator >(std::__1::basic_string, std::__1::allocator > const&, char const*) in OWT(logging.o) bool std::__1::operator==, std::__1::allocator >(std::__1::basic_string, std::__1::allocator > const&, char const*) in OWT(functionalobserver.o) bool std::__1::operator==, std::__1::allocator >(std::__1::basic_string, std::__1::allocator > const&, char const*) in OWT(CameraVideoCapturer.o) ... "std::__1::ios_base::init(void*)", referenced from: std::__1::basic_ios >::init(std::__1::basic_streambuf >*) in OWT(sdputils.o) std::__1::basic_ios >::init(std::__1::basic_streambuf >*) in OWT(json_value.o) std::__1::basic_ios >::init(std::__1::basic_streambuf >*) in OWT(json_reader.o) std::__1::basic_ios >::init(std::__1::basic_streambuf >*) in OWT(json_writer.o) std::__1::basic_ios >::init(std::__1::basic_streambuf >*) in OWT(common.o) std::__1::basic_ios >::init(std::__1::basic_streambuf >*) in OWT(int128.o) std::__1::basic_ios >::init(std::__1::basic_streambuf >*) in OWT(decision_logic.o) ... "operator new(unsigned long)", referenced from: -[OWTConferenceClient initWithConfiguration:] in OWT(OWTConferenceClient.o) -[OWTConferenceClient setDelegate:] in OWT(OWTConferenceClient.o) std::__1::__libcpp_allocate(unsigned long, unsigned long) in OWT(OWTConferenceClient.o) std::__1::__libcpp_allocate(unsigned long, unsigned long) in OWT(OWTConferenceInfo.o) -[OWTConferencePublication setDelegate:] in OWT(OWTConferencePublication.o) std::__1::__libcpp_allocate(unsigned long, unsigned long) in OWT(OWTConferencePublication.o) -[OWTConferenceSubscription setDelegate:] in OWT(OWTConferenceSubscription.o) ... "sio::socket::emit(std::__1::basic_string, std::__1::allocator > const&, sio::message::list const&, std::__1::function const&)", referenced from: owt::conference::ConferenceSocketSignalingChannel::Disconnect(std::__1::function, std::__1::function >)>) in OWT(conferencesocketsignalingchannel.o) owt::conference::ConferenceSocketSignalingChannel::Emit(std::__1::basic_string, std::__1::allocator > const&, sio::message::list const&, std::__1::function, std::__1::function >)>) in OWT(conferencesocketsignalingchannel.o) owt::conference::ConferenceSocketSignalingChannel::RefreshReconnectionTicket() in OWT(conferencesocketsignalingchannel.o) owt::conference::ConferenceSocketSignalingChannel::Connect(std::__1::basic_string, std::__1::allocator > const&, std::__1::function)>, std::__1::function >)>)::$_3::operator()() const in OWT(conferencesocketsignalingchannel.o) "___cxa_guard_acquire", referenced from: sio::message::get_string() const in OWT(conferenceclient.o) sio::message::get_binary() const in OWT(conferenceclient.o) sio::message::get_vector() const in OWT(conferenceclient.o) sio::message::get_vector() in OWT(conferenceclient.o) sio::message::get_map() const in OWT(conferenceclient.o) sio::message::get_map() in OWT(conferenceclient.o) sio::message::get_string() const in OWT(conferencepeerconnectionchannel.o) ... "std::__1::__thread_struct::__thread_struct()", referenced from: std::__1::thread::thread&, void>(std::__1::function&) in OWT(conferencesocketsignalingchannel.o) std::__1::thread::thread, std::__1::allocator > const&)::$_14, void>(owt::conference::ConferenceSocketSignalingChannel::OnReconnectionTicket(std::__1::basic_string, std::__1::allocator > const&)::$_14&&) in OWT(conferencesocketsignalingchannel.o) "std::__1::__shared_weak_count::~__shared_weak_count()", referenced from: std::__1::__shared_ptr_pointer, std::__1::allocator >::__shared_ptr_pointer(owt::conference::AudioSubscriptionConstraints*, std::__1::default_delete, std::__1::allocator) in OWT(OWTConferenceSubscription.o) std::__1::__shared_ptr_pointer, std::__1::allocator >::~__shared_ptr_pointer() in OWT(OWTConferenceSubscription.o) std::__1::__shared_ptr_pointer, std::__1::allocator >::__shared_ptr_pointer(owt::conference::VideoSubscriptionConstraints*, std::__1::default_delete, std::__1::allocator) in OWT(OWTConferenceSubscription.o) std::__1::__shared_ptr_pointer, std::__1::allocator >::~__shared_ptr_pointer() in OWT(OWTConferenceSubscription.o) std::__1::__shared_ptr_pointer, std::__1::allocator >::__shared_ptr_pointer(owt::conference::SubscribeOptions*, std::__1::default_delete, std::__1::allocator) in OWT(OWTConferenceSubscription.o) std::__1::__shared_ptr_pointer, std::__1::allocator >::~__shared_ptr_pointer() in OWT(OWTConferenceSubscription.o) std::__1::__shared_ptr_pointer, std::__1::allocator >::__shared_ptr_pointer(owt::conference::VideoSubscriptionUpdateConstraints*, std::__1::default_delete, std::__1::allocator) in OWT(OWTConferenceSubscription.o) ... "std::__1::basic_ostream >::operator<<(std::__1::basic_streambuf >*)", referenced from: Json::parseFromStream(Json::CharReader::Factory const&, std::__1::basic_istream >&, Json::Value*, std::__1::basic_string, std::__1::allocator >*) in OWT(json_reader.o) "sio::client::set_reconnecting_listener(std::__1::function const&)", referenced from: owt::conference::ConferenceSocketSignalingChannel::Connect(std::__1::basic_string, std::__1::allocator > const&, std::__1::function)>, std::__1::function >)>) in OWT(conferencesocketsignalingchannel.o) ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation) ```

PR 317 should have already solved these kind of errors, right? I already checked my talk/owt/sdk/base/stream.cc file to see if its changes are included. Everything seems ok.

Any more suggestions?

jianjunz commented 3 years ago

It looks like your app doesn't link std lib. These symbols are not defined in OWT.framework.

dilldilldill commented 3 years ago

Alright, I linked libc++.tbd which solved this issue but lead me to the problem that the socket-io cpp binaries were missing (as mentioned in 371). I then used this cocoapod repo to get rid of this error. I am now facing the same issue as in 125. This is probably coming from the fact that the mentioned cocoapod repo is only providing a 6 year old version (1.6.1). I will now try build this myself using the according instructions.

To be continued…

dilldilldill commented 3 years ago

I was not able to build the socket.io cpp project. I keep getting the below error. I tried on 3 different machines.

fatal error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: empty archive with no architecture specification: /Users/xxx/Documents/vypii/Xcode/socket.io-client-cpp-2.0.0/examples/iOS/SioChatDemo/boost/ios/build/arm64/libboost.a (can't determine architecture for it)
dilldilldill commented 3 years ago

After compiling socket.io-client-cpp (with the help of socket.io-client-cpp-ios-static) linking the libsioclient_tls.a file into my project was not enough, as Xcode was still complaining about undefined symbols (_SSL_ctrl, _SSL_CTX_ctrl and _CONF_modules_unload). So I also linked OpenSSL's libcrypto.a and libssl.a file which eventually allowed me to successfully compile my project.

But now I am stuck with a runtime error which occurs as soon as I try to make a connection using OWT.

EXC_BAD_ACCESS (code=257, address=0x3f3910043fd)

#1  0x0000000100f046c8 in ::SSL_CTX_new(const SSL_METHOD *) at /../../third_party/boringssl/src/ssl/ssl_lib.cc:605

error: memory read failed for 0x7391004200
dilldilldill commented 3 years ago

I downloaded CS_WebRTC_Client_SDK_iOS.v5.0.zip which contains precompiled OWT and WebRTC framework. After I linked those into my project the undefined OpenSSL symbols disappeared and I was able to build my project without linking OpenSSL. Now everything seems to be working fine.