我正在尝试升级到最新版本的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
我的智慧结束了,任何帮助都会受到高度赞赏。
谢谢!
答案 0 :(得分:4)
好的,由于OpenTok支持团队的迅速响应,我得到了解决!我也在他们的支持论坛上发布了同样的问题。 (https://forums.tokbox.com/post55977)
这是适用于我的解决方案(逐字逐句)
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个小时!! :(