如何在调试中使用Visual Studio正确编译WebRTC?
How to compile WebRTC properly with Visual Studio in debug?
我正在尝试编译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实现,这可能也会有所帮助!
相关文章:
- C++20 使用 Visual Studio 编译模块:不编译或导入 ixx 文件
- Visual Studio 编译的程序在尝试减小输出大小后无法正确初始化
- Visual Studio:编译每个平台和配置上的模块列表
- 使用Visual Studio编译代码时,boost::iostreams::multichar_input_filte
- 你如何告诉Visual Studio编译外部库
- 在C++中,可以链接到使用早期版本的Visual Studio编译的.lib文件
- C++使用 Visual Studio 编译错误(LNK1120 和 LNK2019)
- 查找文件时出现Visual Studio编译错误
- 如何使用Visual Studio编译libtasn1
- C++ 从Visual Studio编译源文件
- 你如何使用Visual Studio编译V8
- ifstream 使用 g++ 出错,但使用 Visual Studio 编译
- 使用 Visual Studio 编译 SQLite C++ 2013 抛出 .c 文件的错误
- Visual Studio 编译和检测操作器重载,而 g++ 没有
- Visual studio编译文件
- 如何在没有CMake的情况下用visual studio编译opencv
- 如何使用visual studio编译c++ dll
- 我可以不使用Visual Studio编译dll吗?
- 使用 Visual Studio 编译 libcurl(bool undefined)
- 使用 Visual Studio 编译创建新的客户无休止的编译错误