curl 如何在Windows上编译webrtc时避免子库聚集?

1mrurvl1  于 2022-11-13  发布在  Windows
关注(0)|答案(2)|浏览(152)

我尝试在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似乎没有作用...该选项是什么?我可以在哪里传递它?

tyg4sfes

tyg4sfes1#

在遇到了和你一样的问题之后,我切换到了最新的OpenSSL版本3.0.0-beta2-dev,然后我再也看不到所有这些“已经定义”的东西了。
这意味着我可以编译和链接没有错误,但不幸的是,它不工作,并停止在OpenSSLDigest::GetDigestEVP()。所以WebRTC似乎不支持OpenSSL 3.0.0。您是否同时设法让它编译,链接和运行与OpenSSL 1.1.1?

eivgtgni

eivgtgni2#

我也面临同样的问题。你解决了吗?

gn gen out/Release --args="is_debug=false is_component_build=false rtc_include_tests=false use_custom_libcxx=false symbol_level=0 rtc_enable_symbol_export=false use_rtti=true rtc_build_examples=false rtc_build_ssl=false rtc_ssl_root=\"C:\OpenSSL-Win64\include""

我用了rtc_build_ssl = false,但是我发现,无聊ssl还是编译链接

相关问题