如何在调试中使用Visual Studio正确编译WebRTC?

How to compile WebRTC properly with Visual Studio in debug?

本文关键字:Studio 编译 WebRTC Visual 调试      更新时间:2023-10-16

我正在尝试编译WebRTC,但是因为我们使用了许多库,其中一些是闭源的,超出了我们的控制范围,所以如何编译它对匹配相当敏感。我已经不得不编辑build/config/win/BUILD.gn脚本以使用/MDd/MD构建标志,而不是分别使用/MTd/MT,因为我们使用多线程 DLL 运行时。为了构建,我们运行

gn gen out/Debug --args="is_debug=true is_clang=false use_lld=false visual_studio_version=2019"
ninja -C out/Debug

但是,当链接到webrtc.lib时,它失败并出现多个错误,理由是_ITERATOR_DEBUG_LEVEL不匹配。我已经看到了很多这个错误,它发生在将发布构建的库(_ITERATOR_DEBUG_LEVEL=2(与调试可执行文件(_ITERATOR_DEBUG_LEVEL=0(链接时。但是,这显然不是我编译它的方式。我尝试添加/DEBUG(据我所知,/MDd应该暗示这一点(,但它产生了一个具有相同问题的相同库。我已经确认检查生成的 .ninja 脚本,这些参数在cflags中。

有没有办法让忍者正确观察调试标志?

我遇到了同样的问题。虽然WebRTC是一个强大的库,但它对于原生开发来说看起来很糟糕。既没有好的文档也没有示例,尤其是使用外部Google资源。 请试试这个对我有帮助的论点:enable_iterator_debugging=true

我自己不处理libwebrtc,但我听说从长远来看,提取所有文件并使用自己的构建系统可能会有更好的体验。兰花这样做了,但我自己没有看过。

如果你只做数据通道,还有其他的C/C++ WebRTC实现,这可能也会有所帮助!