我尝试在Visual Studio项目中针对Windows上的OpenSSL 1.1.1编译和使用静态WebRTC,下面是我的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个错误:
我知道这是附加的,因为libssl.lib和libcrypto.lib已经聚集在webrtc.lib中。但是在这个项目中,我还使用了Curl和LibWebSocket,它们也依赖于相同的OpenSSL静态库,当我尝试从链接器输入中删除libssl.lib和crypto.lib时,这会失败,并出现67个未解析的符号:
所以我的感觉是,在编译webrtc.lib的过程中,只有webrtc.lib需要的libssl.lib和crypto.lib的一部分被聚合。
我的问题是:**如何在webrtc编译期间避免子库聚集?**选项rtc_build_ssl=false似乎没有作用...该选项是什么?我可以在哪里传递它?
2条答案
按热度按时间tyg4sfes1#
在遇到了和你一样的问题之后,我切换到了最新的OpenSSL版本3.0.0-beta2-dev,然后我再也看不到所有这些“已经定义”的东西了。
这意味着我可以编译和链接没有错误,但不幸的是,它不工作,并停止在
OpenSSLDigest::GetDigestEVP()
。所以WebRTC似乎不支持OpenSSL 3.0.0。您是否同时设法让它编译,链接和运行与OpenSSL 1.1.1?eivgtgni2#
我也面临同样的问题。你解决了吗?
我用了rtc_build_ssl = false,但是我发现,无聊ssl还是编译链接