OpenTok (iOS) v2.4.0(64 位)——架构 armv7 的未定义符号

OpenTok (iOS) v2.4.0 (64-bit) -- Undefined symbols for architecture armv7

我正在尝试升级到最新版本的 OpenTok iOS SDK。但是,我不断收到大量链接错误,如下所示。好像这个最新版本不支持armv7。

Undefined symbols for architecture armv7:
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(short)", referenced from:
webrtc::NetEqImpl::DecodeLoop(std::__1::list<webrtc::Packet*, std::__1::allocator<webrtc::Packet*> >*, webrtc::Operations*, webrtc::AudioDecoder*, int*, webrtc::AudioDecoder::SpeechType*) in OpenTok(neteq.neteq_impl.o)
std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >* rtc::MakeCheckOpString<int, short>(int const&, short const&, char const*) in OpenTok(neteq.audio_decoder_impl.o)
"void std::__1::__sort<std::__1::__less<unsigned char, unsigned char>&, unsigned char*>(unsigned char*, unsigned char*, std::__1::__less<unsigned char, unsigned char>&)", referenced from:
webrtc::Sort(void*, unsigned int, webrtc::Type) in OpenTok(system_wrappers.sort.o)
void boost::detail::spread_sort_rec<unsigned char*, int, unsigned char>(unsigned char*, unsigned char*, std::__1::vector<unsigned char*, std::__1::allocator<unsigned char*> >&, unsigned int, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >&) in OpenTok(system_wrappers.sort.o)
"void std::__1::__sort<std::__1::__less<unsigned short, unsigned short>&, unsigned short*>(unsigned short*, unsigned short*, std::__1::__less<unsigned short, unsigned short>&)", referenced from:
webrtc::Sort(void*, unsigned int, webrtc::Type) in OpenTok(system_wrappers.sort.o)
void boost::detail::spread_sort_rec<unsigned short*, int, unsigned short>(unsigned short*, unsigned short*, std::__1::vector<unsigned short*, std::__1::allocator<unsigned short*> >&, unsigned int, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >&) in OpenTok(system_wrappers.sort.o)
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::append(unsigned long, char)", referenced from:
rtc::HttpParseAttributes(char const*, unsigned long, std::__1::vector<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >&) in OpenTok(rtc_base.httpcommon.o)
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(unsigned long long)", referenced from:
webrtc::WebRtcSession::WebRtcSession(cricket::ChannelManager*, rtc::Thread*, rtc::Thread*, cricket::PortAllocator*, webrtc::MediaStreamSignaling*) in OpenTok(libjingle_peerconnection.webrtcsession.o)
cricket::Connection::ToString() const in OpenTok(rtc_p2p.port.o)
webrtc::WebRtcSessionDescriptionFactory::InternalCreateOffer(webrtc::CreateSessionDescriptionRequest) in OpenTok(libjingle_peerconnection.webrtcsessiondescriptionfactory.o)
webrtc::WebRtcSessionDescriptionFactory::InternalCreateAnswer(webrtc::CreateSessionDescriptionRequest) in OpenTok(libjingle_peerconnection.webrtcsessiondescriptionfactory.o)

但是,lipo 命令确认该框架确实支持 armv7 和 arm64 架构:

$> lipo -info OpenTok.framework/OpenTok
Architectures in the fat file: OpenTok.framework/OpenTok are: armv7 armv7s i386 x86_64 arm64

我已无计可施,如有任何帮助,我们将不胜感激。

谢谢!

好的,感谢 OpenTok 支持团队的及时回复,我解决了这个问题!我也在他们的支持论坛上发布了同样的问题。 (https://forums.tokbox.com/post55977)

这是对我有用的解决方案(从上面逐字记录 link)

What are your Build settings? armv7 is supported.

also make sure that you have added the new lib/frameworks as follows:

- Add VideoToolbox.framework.
- Remove libstdc++ and add libc++
- add GLKit.framework (if not there previously)

我的框架列表中缺少上述几个文件。我附上了完整列表的屏幕截图,以防其他人遇到同样的问题。

我在这上面浪费了将近 6 个小时!! :(