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

标签 c++ visual-studio webrtc chromium ninja

我正在尝试编译 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

关于c++ - 如何在调试中使用 Visual Studio 正确编译 WebRTC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60003055/

相关文章:

c++ - 更好的 vector 数据压缩算法?

c++ - 虚方法调用线程安全吗?

javascript - WebRTC Chrome 和 Firefox connection.setRemoteDescription

c++ - 分配抽象类类型的对象

c++ - QTableView/自定义表格模型 : set text color in header

c++ - 如何解决未正确弹出的 #pragma 禁用警告问题

c# - 在一个文件中包含多个类定义是一种好习惯吗?

c# - 如何在编译开始之前、生成中间文件之后运行 MSBuild 任务?

javascript - 实时 webRTC 音频波形

javascript - WebRTC 硬编码连接(无服务器)