Я экспериментирую с WebRTC и наткнулся на досадную проблему.При использовании обоих:
BoringSSL (что составляет third_party
для WebRTC ) и boost :: uuid Я не могу скомпилировать свое решение из-заПроблема переопределения X509.
Проблема:
BoringSSL определяет X509 самостоятельно, поэтому, когда я связываю wincrypt.h с помощью boost :: uuid, который определяет его сам, возникает проблема переопределения.Эта проблема возникает каждый раз, когда вы пытаетесь использовать 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)
, и проблема будет немедленно решена.Имя флага не имеет значения, просто пример.
Мое второе решение предпочтительнее, и я бы хотел, чтобы оно было включено в дальнейшие версии BoringSSL для WebRTC.На веб-сайте BoringSSL есть информация, которая гласит:
Программы отправляют свои собственные копии BoringSSL, когда они его используют, и мы обновляем все по мере необходимости при принятии решения об изменениях API.Это позволяет нам в основном избегать компромиссов во имя совместимости.Он работает для нас, но может не работать для вас.
Мои вопросы:
Означает ли эта цитата, что с WebRTC поставляется уникальная версия BoringSSL?
Если так, куда мне направить мою проблему?Я хотел бы внести свой вклад, чтобы это помогло кому-то еще в будущем, но я не уверен, где, к репозиторию WebRTC?Для BoringSSL?
Заранее спасибо за то, что вычистили его для меня.