Как избежать агрегации подбиблиотек во время компиляции webrt c на Windows? - PullRequest
1 голос
/ 06 августа 2020

Я пытаюсь скомпилировать и использовать stati c WebRT C против OpenSSL 1.1.1 на Windows в проекте Visual Studio, вот моя строка gn:

gn gen ./intermediate --args="target_cpu=\"x64\" use_rtti=false is_debug=true symbol_level=2 enable_iterator_debugging=true rtc_build_tools=false rtc_build_examples=false rtc_include_tests=false enable_precompiled_headers=false use_cxx11=false use_custom_libcxx=false use_custom_libcxx_for_host=false rtc_build_ssl=false rtc_ssl_root=\"C:/libs/OpenSSL/include:\=\\%\" rtc_build_json=false rtc_jsoncpp_root=\"C:/libs/JsonCpp/include:\=\\%\" is_clang=false is_component_build=false use_lld=false dcheck_is_configurable=true"

Компиляция в порядке , но в моем проекте Visual Studio 2019 у меня были следующие 1156 ошибок на этапе компоновщика:

1 - libssl.lib(ssl_lib.obj) : error LNK2005: SSL_CTX_check_private_key already defined in webrtc.lib(ssl_lib.obj)
2 - libssl.lib(ssl_lib.obj) : error LNK2005: SSL_CTX_clear_options already defined in webrtc.lib(ssl_lib.obj)
3 - libssl.lib(ssl_lib.obj) : error LNK2005: SSL_CTX_free already defined in webrtc.lib(ssl_lib.obj)
4 - libssl.lib(ssl_lib.obj) : error LNK2005: SSL_CTX_get0_certificate already defined in webrtc.lib(ssl_x509.obj)
...
1154 - libcrypto.lib(p12_asn.obj) : error LNK2005: d2i_PKCS12 already defined in webrtc.lib(pkcs8_x509.obj)
1155 - libcrypto.lib(p12_asn.obj) : error LNK2005: i2d_PKCS12 already defined in webrtc.lib(pkcs8_x509.obj)
1156 - libcrypto.lib(asn1_par.obj) : error LNK2005: ASN1_tag2str already defined in webrtc.lib(asn1_par.obj)

I понял, что это добавлено, потому что libssl.lib и libcrypto.lib уже агрегированы в webrt c .lib . Но в этом проекте я также использую Curl и LibWebSocket, которые также зависят от одних и тех же библиотек OpenSSL stati c, и когда я пытаюсь удалить libssl.lib и crypto.lib из ввода компоновщика, это не удается с 67 неразрешенными символами :

1 - websockets_static.lib(openssl-server.obj) : error LNK2001: unresolved external symbol SSL_ctrl
2 - webrtc.lib(openssl_adapter.obj) : error LNK2001: unresolved external symbol SSL_ctrl
...
66 - libcurl.lib(openssl.obj) : error LNK2019: unresolved external symbol ENGINE_set_default referenced in function x509_name_oneline
67 - websockets_static.lib(openssl-server.obj) : error LNK2019: unresolved external symbol SSL_CTX_callback_ctrl referenced in function lws_tls_server_vhost_backend_init

Итак, я считаю, что только некоторая часть libssl.lib и crypto.lib, которые необходимы webrt c .lib, агрегируются во время компиляции webrt c .lib

Мой вопрос: как избежать агрегации подбиблиотек во время компиляции webrt c? Параметр rtc_build_ssl = false, похоже, не действует ... Что это за опция и где можно Сдаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...