如何将 webrtc 原生 api 添加到我的 qt 项目中?

更长.L

我这几天遇到了麻烦,所以我真的需要一些webrtc的导出来帮助我。

我用ninja的源码编译成功,可以运行peerconnection的例子了。我将静态库(.a文件)一一添加到我的qt项目中,然后我将包含路径设置为源代码目录。当我调用 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 tortc::FatalMessage::FatalMessage(char const*, int, std::__cxx11::basic_string, std::allocator >*) 的未定义引用

我搜索了头文件,发现函数是在 rtc_base/checks.h 中声明的,我去阅读 BUILD.GN,发现“检查”已经构建到 librtc_base_genetic.a 中。我很确定我已经将这个库添加到我的 qt .pro 文件中。

我正在使用 ubuntu18、QT5.10.1,我在 5 月 19 日拿到了源代码。如果您能给我任何建议,也许这是如何发生的或者我该如何解决这个问题,我将不胜感激。

有没有人导入webrtc原生库并成功使用过apis?我真的需要有人的帮助来克服这个艰难的开始。我最感激!

我欠你

这可能是因为std::string. libstdc++从老牛落实到另一个改变。链接器需要 的__cxx11版本std::string,但库是用另一个版本编译的。

一种可能的解决方案是使用libstdc++来自实际操作系统的操作系统,而不是libc++使用 WebRTC Native 自带的操作系统为此,请编辑 ninja 文件中的所有命令行选项,以删除类似内容-nostdlib并将 sysroot 设置为实际根目录:

sed -i -re 's#obj/buildtools/third_party/libc[^[:space:]]*\s*##g' obj/webrtc.ninja
find . -type f -name \*.ninja -a ! -name \*libc++* -exec sed -i -re 's/\s*-nostd(inc|lib)\+\+//' {} \+
find . -type f -name \*.ninja -a ! -name \*libc++* -exec sed -i -re 's/\s*\S*isystem\S*libc\+\+\S*//g' {} \+
find . -type f -name \*.ninja -exec sed -i -re 's#(--sysroot=)[^[:space:]]*#\1/#' {} \+
find . -type f -name \*.ninja -exec sed -i -re 's#(-L)[^[:space:]]*-sysroot#\1#g' {} \+
find . -type f -name \*.ninja -exec sed -i -re 's#(rpath-link=)[^[:space:]]*-sysroot#\1#g' {} \+

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将Guava添加到我的Eclipse项目中?

如何将BundleConfig.cs添加到我的项目中?

如何将com.typesafe.sbt。*依赖项添加到我的项目中?

如何将MP3添加到我的iOS / Xcode项目中?

如何将Google Play服务添加到我的Eclipse ADT项目中

如何将Red Bean PHP正确添加到我的项目中

如何准确地将API端点添加到我正在处理的jsp项目中?

如何将外部.exe添加到我的C#项目中?

无法将AdMob添加到我的项目中:我的项目是ReactNative,而AdMob需要JAVA

如何将git中的软件包添加到我的Meteor项目中

如何将NAudio添加到我的项目?

如何将赛车车轮添加到我的Unity项目中

如何将外部库RainyDay.js添加到我的项目中?

如何在Windows上将libpng安装并添加到我的Qt项目

如何将系统api类添加到非AOSP构建的android项目中

如何将Bango SDK添加到我的android项目中?

如何将真实文件夹添加到我的Netbeans C项目中?

如何将dll文件永久添加到我的项目中?

如何将android支持库添加到我的netbeans项目中

无法将coreGraphics添加到我的项目中

试图弄清楚如何将GestureDetectorCompat添加到我的项目中

如何将远程子模块添加到我的github项目中?

如何将Gulp添加到我的项目中?

如何将 pod 添加到我的 flutter / iOS 项目中?

如何将 json 数据添加到我的 xcode 项目中?

如何将动态日期添加到我的 Swing 项目中?

如何将包集合添加到我的 Xcode 项目中?

如何将触发键添加到我的 javascript 项目中

如何将 Github“BigFloat”库添加到我的 c++ 项目中