我已经遇到麻烦了几天,所以我真的需要一些webrtc出口来帮助我。
我使用ninja的源代码成功编译,我可以运行peerconnection示例。我将静态库(.a文件)逐个添加到我的qt项目中,然后将include路径设置为源代码dir。当我调用createpeerconnectionfactory时它会成功编译。但是,当我尝试新建一个PeerConnectionInterface :: RTCConfiguration对象时,会发生错误:
linux / webrtc / src / api / array_view.h:156:错误:未定义引用rtc::FatalMessage::FatalMessage(char const*, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)'
linux/webrtc/src/api/array_view.h:158: error: more undefined references to
rtc :: FatalMessage :: FatalMessage(char const *,int,std :: __ cxx11 :: basic_string,std :: allocator&gt; *)'关注
我搜索了头文件,发现函数是在rtc_base / checks.h中声明的 我去阅读BUILD.GN,发现“check”已经构建到librtc_base_genetic.a中。我很确定我已将此库添加到我的qt .pro文件中。
我正在使用ubuntu18,QT5.10.1,我在5月19日获得了源代码。 如果你能给我任何建议,也许这是怎么发生的,或者我怎样才能解决这个问题,我将非常感激。
是否有人导入了webrtc本机库并成功使用了api?我真的需要别人的帮助来克服这个艰难的开端。 我非常感激!
答案 0 :(得分:1)
这可能是因为std::string
的ABI不兼容。 libstdc++
已从旧的COW实施更改为另一实施。链接器需要__cxx11
的{{1}}版本,但是该库是与另一个库一起编译的。
一个可能的解决方案是使用实际操作系统中的std::string
代替WebRTC Native附带的libstdc++
。为此,请编辑忍者文件中的所有命令行选项,以删除诸如libc++
之类的内容,并将sysroot设置为实际的root:
-nostdlib
还有其他问题,它们随着代码的变化而变化。构建和使用该库需要大量工作。