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