如何将webrtc native apis添加到我的qt项目中?

时间:2018-06-04 08:26:26

标签: c++ linux qt webrtc

我已经遇到麻烦了几天,所以我真的需要一些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?我真的需要别人的帮助来克服这个艰难的开端。 我非常感激!

1 个答案:

答案 0 :(得分:1)

这可能是因为std::string的ABI不兼容。 libstdc++已从旧的COW实施更改为另一实施。链接器需要__cxx11的{​​{1}}版本,但是该库是与另一个库一起编译的。

一个可能的解决方案是使用实际操作系统中的std::string代替WebRTC Native附带的libstdc++。为此,请编辑忍者文件中的所有命令行选项,以删除诸如libc++之类的内容,并将sysroot设置为实际的root:

-nostdlib

还有其他问题,它们随着代码的变化而变化。构建和使用该库需要大量工作。