我正在尝试使用WebRTC并偶然发现了令人讨厌的问题。同时使用两者:
BoringSSL(third_party
用于WebRTC)和boost::uuid由于 X509 重新定义问题,我无法编译我的解决方案。
问题:
BoringSSL 自己定义 X509,所以当我通过自己定义的 boost::uuid 链接 wincrypt.h 时,会出现重新定义问题。每次您尝试使用wincrypt.h
或任何其他third_party
依赖于它的WebRTC时都会出现此问题。
解决方案:
我可能会使用 boost::uuid 以外的其他东西
我可以在BoringSSL文件
base.h
中添加#undef
预处理宏:
#ifdef CRYPT
#undef X509_NAME
#undef X509_CERT_PAIR
#undef X509_EXTENSIONS
#endif
这样您就可以在项目的 CMake 中使用
add_definitions(-DCRYPT)
问题将立即得到解决。标志名称无关紧要,只是示例。
我的第二个解决方案更可取,我希望将它包含在 WebRTC 的 BoringSSL 的更多版本中。在 BoringSSL 网站上有一条信息表明:
程序在使用 BoringSSL 时会提供自己的副本,我们会在决定进行 API 更改时根据需要更新所有内容。这使我们能够在很大程度上避免以兼容性为名的妥协。它适用于我们,但它可能不适合您。
我的问题:
这句话是否意味着 WebRTC 以某种方式发布了 BoringSSL 的独特版本?
如果是这样,我应该在哪里解决我的问题?我想做出贡献,以便将来帮助其他人,但我不确定 WebRTC 回购在哪里?去无聊的SSL?
提前感谢您为我清理它。