报错:
Undefined symbols for architecture x86_64:
"_ff_async_protocol", referenced from:
_qc_ijkav_register_async_protocol in TXLiteAVSDK_TRTC(ijkutils.o)
"_res_9_ninit", referenced from:
tx_getdnssvraddrs(std::__1::vector<tx_socket_address, std::__1::allocator<tx_socket_address> >&) in TXLiteAVSDK_TRTC(getdnssvraddrs.o)
-[TXCStreamUploader getDNSServers] in TXLiteAVSDK_TRTC(TXCStreamUploader.o)
"_res_9_getservers", referenced from:
tx_getdnssvraddrs(std::__1::vector<tx_socket_address, std::__1::allocator<tx_socket_address> >&) in TXLiteAVSDK_TRTC(getdnssvraddrs.o)
-[TXCStreamUploader getDNSServers] in TXLiteAVSDK_TRTC(TXCStreamUploader.o)
"VTT for std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >", referenced from:
WavInFile::read(short*, int) in PengPeng_lto.o
WavInFile::read(float*, int) in PengPeng_lto.o
WavOutFile::write(short const*, int) in PengPeng_lto.o
"std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream()", referenced from:
WavInFile::read(short*, int) in PengPeng_lto.o
- 分析 此问题是因为SDK引用了原来stdlibc++6.0.9库,如果Other Linker Flags设置了-all_load,会导致把全部SDK文件都加载进来,包括引用了但没有使用的stdlibc++6.0.9库函数,而XCode 10之后普遍只有libc++.tbd(如果没有做拷贝stdc++.6.0.9.tbd的骚操作的话),因此导致Linker找不到要链接的上诉函数符号导致报错。(在Demo加入-all_load参数即可复现该链接错误)
p.s.-all_load参数是为了强制加载所有文件
- 解决方案:
-
- Other Linker Flags 移除-all_load(需要做测试确认其他第三方库是否会因此出现加载问题);
-
- 拷贝stdlibc++.6.0.9.tbd并加入项目参与编译(骚操作);
-
- 反映一下让官方把相关部分做一下修正;
-