WebRTC与iOS App集成

时间:2016-11-01 14:30:57

标签: ios webrtc

我通过另一个静态库建立webRTC和我的应用程序访问WebRTC API。 LibB 当我将LibB与我的应用程序链接并构建它时,它失败并显示以下日志: ****我已针对AMD64 / ARMv7构建WebRTC ** 架构arm64的未定义符号:

Undefined symbols for architecture arm64:
  "webrtc::FIRFilterNEON::FIRFilterNEON(float const*, unsigned long, unsigned long)", referenced from:
      webrtc::FIRFilter::Create(float const*, unsigned long, unsigned long) in LibB.a(fir_filter.o)
  "vtable for webrtc::DenoiserFilterNEON", referenced from:
      webrtc::DenoiserFilterNEON::DenoiserFilterNEON() in LibB.a(denoiser_filter.o)
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "webrtc::SincResampler::Convolve_NEON(float const*, float const*, float const*, double)", referenced from:
      webrtc::SincResampler::Resample(unsigned long, float*) in LibB.a(sinc_resampler.o)
  "_WebRtcNsx_NoiseEstimationNeon", referenced from:
      l008 in LibB.a(nsx_core.o)
  "_SHA1_Final", referenced from:
      _sctp_sha1_final in LibB.a(sctp_sha1.o)
  "_EVP_MD_CTX_copy", referenced from:
      _hmac_start in LibB.a(hmac_ossl.o)
  "_EVP_DigestInit", referenced from:
      l002 in LibB.a(hmac_ossl.o)
  "_EVP_EncryptUpdate", referenced from:
      _aes_icm_openssl_encrypt in LibB.a(aes_icm_ossl.o)
  "_EVP_EncryptFinal_ex", referenced from:
      _aes_icm_openssl_encrypt in LibB.a(aes_icm_ossl.o)
  "_EVP_aes_256_ctr", referenced from:
      _aes_icm_openssl_set_iv in LibB.a(aes_icm_ossl.o)
  "_EVP_aes_128_ctr", referenced from:
      _aes_icm_openssl_set_iv in LibB.a(aes_icm_ossl.o)
  "_EVP_EncryptInit_ex", referenced from:
      _aes_icm_openssl_set_iv in LibB.a(aes_icm_ossl.o)
  "_EVP_aes_256_gcm", referenced from:
      _aes_gcm_openssl_set_iv in LibB.a(aes_gcm_ossl.o)
  "_EVP_DigestFinal", referenced from:
      l004 in LibB.a(hmac_ossl.o)
  "_EVP_aes_128_gcm", referenced from:
      _aes_gcm_openssl_set_iv in LibB.a(aes_gcm_ossl.o)
  "_EVP_CIPHER_CTX_cleanup", referenced from:
      _aes_gcm_openssl_dealloc in LibB.a(aes_gcm_ossl.o)
      _aes_gcm_openssl_context_init in LibB.a(aes_gcm_ossl.o)
      _aes_icm_openssl_dealloc in LibB.a(aes_icm_ossl.o)
      _aes_icm_openssl_context_init in LibB.a(aes_icm_ossl.o)
  "_EVP_CIPHER_CTX_init", referenced from:
      _aes_gcm_openssl_alloc in LibB.a(aes_gcm_ossl.o)
      _aes_icm_openssl_alloc in LibB.a(aes_icm_ossl.o)
  "google::protobuf::internal::WireFormatLite::WriteBytes(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)", referenced from:
      webrtc::audioproc::ReverseStream::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(debug.pb.o)
      webrtc::audioproc::Stream::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(debug.pb.o)
  "google::protobuf::io::CodedInputStream::PopLimit(int)", referenced from:
      bool google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<unsigned int, (google::protobuf::internal::WireFormatLite::FieldType)13>(google::protobuf::io::CodedInputStream*, google::protobuf::RepeatedField<unsigned int>*) in LibB.a(rtc_event_log.pb.o)
  "google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, google::protobuf::io::CodedOutputStream*)", referenced from:
      webrtc::rtclog::DecoderConfig::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::RtpHeaderExtension::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::EncoderConfig::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::audioproc::Config::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(debug.pb.o)
  "google::protobuf::internal::WireFormatLite::WriteInt32(int, int, google::protobuf::io::CodedOutputStream*)", referenced from:
      webrtc::rtclog::BwePacketLossEvent::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::DecoderConfig::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::RtpHeaderExtension::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::RtxConfig::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::RtxMap::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::VideoSendConfig::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::EncoderConfig::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      ...
  "google::protobuf::internal::WireFormatLite::WriteUInt32(int, unsigned int, google::protobuf::io::CodedOutputStream*)", referenced from:
      webrtc::rtclog::RtpPacket::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::AudioPlayoutEvent::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::BwePacketLossEvent::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::VideoReceiveConfig::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::RtxConfig::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::VideoSendConfig::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::AudioReceiveConfig::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      ...
  "google::protobuf::internal::WireFormatLite::ReadBytes(google::protobuf::io::CodedInputStream*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)", referenced from:
      webrtc::rtclog::RtpPacket::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*) in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::RtcpPacket::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*) in LibB.a(rtc_event_log.pb.o)
      google::protobuf::internal::WireFormatLite::ReadString(google::protobuf::io::CodedInputStream*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) in LibB.a(rtc_event_log.pb.o)
      webrtc::audioproc::ReverseStream::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*) in LibB.a(debug.pb.o)
      webrtc::audioproc::Stream::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*) in LibB.a(debug.pb.o)
  "google::protobuf::MessageLite::InitializationErrorString() const", referenced from:
      vtable for webrtc::rtclog::EventStream in LibB.a(rtc_event_log.pb.o)
      vtable for webrtc::rtclog::Event in LibB.a(rtc_event_log.pb.o)
      vtable for webrtc::rtclog::RtpPacket in LibB.a(rtc_event_log.pb.o)
      vtable for webrtc::rtclog::RtcpPacket in LibB.a(rtc_event_log.pb.o)
      vtable for webrtc::rtclog::AudioPlayoutEvent in LibB.a(rtc_event_log.pb.o)
      vtable for webrtc::rtclog::BwePacketLossEvent in LibB.a(rtc_event_log.pb.o)
      vtable for webrtc::rtclog::VideoReceiveConfig in LibB.a(rtc_event_log.pb.o)
      ...
  "google::protobuf::internal::ArenaStringPtr::AssignWithDefault(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const*, google::protobuf::internal::ArenaStringPtr)", referenced from:
      webrtc::rtclog::RtpPacket::MergeFrom(webrtc::rtclog::RtpPacket const&) in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::RtcpPacket::MergeFrom(webrtc::rtclog::RtcpPacket const&) in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::DecoderConfig::MergeFrom(webrtc::rtclog::DecoderConfig const&) in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::RtpHeaderExtension::MergeFrom(webrtc::rtclog::RtpHeaderExtension const&) in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::EncoderConfig::MergeFrom(webrtc::rtclog::EncoderConfig const&) in LibB.a(rtc_event_log.pb.o)
      webrtc::audioproc::ReverseStream::MergeFrom(webrtc::audioproc::ReverseStream const&) in LibB.a(debug.pb.o)
      webrtc::audioproc::Stream::MergeFrom(webrtc::audioproc::Stream const&) in LibB.a(debug.pb.o)
      ...
  "google::protobuf::internal::WireFormatLite::WriteInt64(int, long long, google::protobuf::io::CodedOutputStream*)", referenced from:
      webrtc::rtclog::Event::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
  "google::protobuf::io::CodedInputStream::DecrementRecursionDepthAndPopLimit(int)", referenced from:
      bool google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual<webrtc::rtclog::RtpPacket>(google::protobuf::io::CodedInputStream*, webrtc::rtclog::RtpPacket*) in LibB.a(rtc_event_log.pb.o)
      bool google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual<webrtc::rtclog::RtcpPacket>(google::protobuf::io::CodedInputStream*, webrtc::rtclog::RtcpPacket*) in LibB.a(rtc_event_log.pb.o)
      bool google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual<webrtc::rtclog::AudioPlayoutEvent>(google::protobuf::io::CodedInputStream*, webrtc::rtclog::AudioPlayoutEvent*) in LibB.a(rtc_event_log.pb.o)
      bool google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual<webrtc::rtclog::BwePacketLossEvent>(google::protobuf::io::CodedInputStream*, webrtc::rtclog::BwePacketLossEvent*) in LibB.a(rtc_event_log.pb.o)
      bool google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual<webrtc::rtclog::VideoReceiveConfig>(google::protobuf::io::CodedInputStream*, webrtc::rtclog::VideoReceiveConfig*) in LibB.a(rtc_event_log.pb.o)
      bool google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual<webrtc::rtclog::VideoSendConfig>(google::protobuf::io::CodedInputStream*, webrtc::rtclog::VideoSendConfig*) in LibB.a(rtc_event_log.pb.o)
      bool google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual<webrtc::rtclog::AudioReceiveConfig>(google::protobuf::io::CodedInputStream*, webrtc::rtclog::AudioReceiveConfig*) in LibB.a(rtc_event_log.pb.o)
      ...
  "google::protobuf::io::CodedInputStream::PushLimit(int)", referenced from:
      bool google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<unsigned int, (google::protobuf::internal::WireFormatLite::FieldType)13>(google::protobuf::io::CodedInputStream*, google::protobuf::RepeatedField<unsigned int>*) in LibB.a(rtc_event_log.pb.o)
  "google::protobuf::io::CodedOutputStream::VarintSize64(unsigned long long)", referenced from:
      google::protobuf::internal::WireFormatLite::Int64Size(long long) in LibB.a(rtc_event_log.pb.o)
  "google::protobuf::io::CodedOutputStream::WriteVarint32SlowPath(unsigned int)", referenced from:
      google::protobuf::io::CodedOutputStream::WriteVarint32(unsigned int) in LibB.a(rtc_event_log.pb.o)
  "google::protobuf::internal::ArenaStringPtr::MutableNoArena(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const*)", referenced from:
      webrtc::rtclog::EventStream::mutable_unknown_fields() in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::Event::mutable_unknown_fields() in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::RtpPacket::mutable_header() in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::RtpPacket::mutable_unknown_fields() in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::RtcpPacket::mutable_packet_data() in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::RtcpPacket::mutable_unknown_fields() in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::AudioPlayoutEvent::mutable_unknown_fields() in LibB.a(rtc_event_log.pb.o)
      ...
  "google::protobuf::io::CodedOutputStream::WriteRaw(void const*, int)", referenced from:
      webrtc::rtclog::EventStream::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::Event::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::RtpPacket::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::RtcpPacket::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::AudioPlayoutEvent::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::BwePacketLossEvent::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::VideoReceiveConfig::SerializeWithCachedSizes(google::protobuf::io::CodedOutputStream*) const in LibB.a(rtc_event_log.pb.o)
      ...
  "google::protobuf::io::CodedInputStream::ReadLengthAndPushLimit()", referenced from:
      bool google::protobuf::internal::WireFormatLite::ReadMessageNoVirtualNoRecursionDepth<webrtc::rtclog::Event>(google::protobuf::io::CodedInputStream*, webrtc::rtclog::Event*) in LibB.a(rtc_event_log.pb.o)
      bool google::protobuf::internal::WireFormatLite::ReadMessageNoVirtualNoRecursionDepth<webrtc::rtclog::RtxMap>(google::protobuf::io::CodedInputStream*, webrtc::rtclog::RtxMap*) in LibB.a(rtc_event_log.pb.o)
      bool google::protobuf::internal::WireFormatLite::ReadMessageNoVirtualNoRecursionDepth<webrtc::rtclog::RtpHeaderExtension>(google::protobuf::io::CodedInputStream*, webrtc::rtclog::RtpHeaderExtension*) in LibB.a(rtc_event_log.pb.o)
      bool google::protobuf::internal::WireFormatLite::ReadMessageNoVirtualNoRecursionDepth<webrtc::rtclog::DecoderConfig>(google::protobuf::io::CodedInputStream*, webrtc::rtclog::DecoderConfig*) in LibB.a(rtc_event_log.pb.o)
  "google::protobuf::internal::LogMessage::operator<<(int)", referenced from:
      l003 in LibB.a(rtc_event_log.pb.o)
      l003 in LibB.a(debug.pb.o)
  "google::protobuf::io::CodedInputStream::CheckEntireMessageConsumedAndPopLimit(int)", referenced from:
      bool google::protobuf::internal::WireFormatLite::ReadMessageNoVirtualNoRecursionDepth<webrtc::rtclog::Event>(google::protobuf::io::CodedInputStream*, webrtc::rtclog::Event*) in LibB.a(rtc_event_log.pb.o)
      bool google::protobuf::internal::WireFormatLite::ReadMessageNoVirtualNoRecursionDepth<webrtc::rtclog::RtxMap>(google::protobuf::io::CodedInputStream*, webrtc::rtclog::RtxMap*) in LibB.a(rtc_event_log.pb.o)
      bool google::protobuf::internal::WireFormatLite::ReadMessageNoVirtualNoRecursionDepth<webrtc::rtclog::RtpHeaderExtension>(google::protobuf::io::CodedInputStream*, webrtc::rtclog::RtpHeaderExtension*) in LibB.a(rtc_event_log.pb.o)
      bool google::protobuf::internal::WireFormatLite::ReadMessageNoVirtualNoRecursionDepth<webrtc::rtclog::DecoderConfig>(google::protobuf::io::CodedInputStream*, webrtc::rtclog::DecoderConfig*) in LibB.a(rtc_event_log.pb.o)
  "google::protobuf::io::CodedOutputStream::CodedOutputStream(google::protobuf::io::ZeroCopyOutputStream*, bool)", referenced from:
      webrtc::rtclog::EventStream::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*) in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::Event::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*) in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::RtpPacket::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*) in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::RtcpPacket::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*) in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::AudioPlayoutEvent::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*) in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::BwePacketLossEvent::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*) in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::VideoReceiveConfig::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*) in LibB.a(rtc_event_log.pb.o)
      ...
  "google::protobuf::internal::ArenaStringPtr::DestroyNoArena(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const*)", referenced from:
      webrtc::rtclog::EventStream::SharedDtor() in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::Event::SharedDtor() in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::RtpPacket::SharedDtor() in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::RtcpPacket::SharedDtor() in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::AudioPlayoutEvent::SharedDtor() in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::BwePacketLossEvent::SharedDtor() in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::VideoReceiveConfig::SharedDtor() in LibB.a(rtc_event_log.pb.o)
      ...
  "_SHA1_Init", referenced from:
      _sctp_sha1_init in LibB.a(sctp_sha1.o)
  "vtable for google::protobuf::MessageLite", referenced from:
      google::protobuf::MessageLite::MessageLite() in LibB.a(rtc_event_log.pb.o)
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "google::protobuf::GoogleOnceInit(long*, void (*)())", referenced from:
      webrtc::rtclog::protobuf_AddDesc_rtc_5fevent_5flog_2eproto() in LibB.a(rtc_event_log.pb.o)
      webrtc::audioproc::protobuf_AddDesc_debug_2eproto() in LibB.a(debug.pb.o)
  "google::protobuf::internal::OnShutdown(void (*)())", referenced from:
      webrtc::rtclog::protobuf_AddDesc_rtc_5fevent_5flog_2eproto_impl() in LibB.a(rtc_event_log.pb.o)
      webrtc::audioproc::protobuf_AddDesc_debug_2eproto_impl() in LibB.a(debug.pb.o)
  "google::protobuf::MessageLite::SerializeAsString() const", referenced from:
      webrtc::AudioProcessingImpl::WriteConfigMessage(bool) in LibB.a(audio_processing_impl.o)
  "google::protobuf::io::CodedOutputStream::VarintSize32Fallback(unsigned int)", referenced from:
      google::protobuf::io::CodedOutputStream::VarintSize32(unsigned int) in LibB.a(rtc_event_log.pb.o)
  "_WebRtcSpl_CrossCorrelationNeon", referenced from:
      l004 in LibB.a(spl_init.o)
  "google::protobuf::internal::WireFormatLite::SkipField(google::protobuf::io::CodedInputStream*, unsigned int, google::protobuf::io::CodedOutputStream*)", referenced from:
      webrtc::rtclog::EventStream::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*) in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::Event::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*) in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::RtpPacket::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*) in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::RtcpPacket::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*) in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::AudioPlayoutEvent::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*) in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::BwePacketLossEvent::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*) in LibB.a(rtc_event_log.pb.o)
      webrtc::rtclog::VideoReceiveConfig::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*) in LibB.a(rtc_event_log.pb.o)
      ...
  "_X509_set_pubkey", referenced from:
      l004 in LibB.a(opensslidentity.o)
  "_WebRtcSpl_MinValueW16Neon", referenced from:
      l004 in LibB.a(spl_init.o)

我是webRTC的新手,花了更多的时间来解决这个问题。非常感谢任何帮助

由于

4 个答案:

答案 0 :(得分:3)

尝试设置"Enable Bitcode" = "No"

转到Targers->设置->构建选项->启用BitCode =否

答案 1 :(得分:0)

您可以使用"webrtc/build/ios/build_ios_libs.sh"脚本生成WebRTC框架。

或者您可以尝试my framework

您需要将此框架链接到嵌入式二进制文件中的Xcode项目。

答案 2 :(得分:0)

你必须同时为arm64和arm生成框架

使用以下命令:

gn gen out/Debug-device --args='target_os="ios" target_cpu="x64" is_component_build=false additional_target_cpus=["arm", "arm64"] enable_dsyms=true ios_enable_code_signing = false'

ninja -C out/Debug-device rtc_sdk_framework_objc

答案 3 :(得分:0)

您是否尝试过使用CocoaPods?在我的项目中,我使用CocoaPods for WebRTC

只需将其放入您的Pod文件中,然后按pod install进行操作,就可以了!