gpt4 book ai didi

ssl - QT_NO_SSL 与 QSslSocket::supportsSsl() 的关系

转载 作者:太空宇宙 更新时间:2023-11-03 12:51:46 33 4
gpt4 key购买 nike

有一个定义 QT_NO_SSL ,如果没有找到 Ssl 库,则定义。还有方法 QSslSocket::supportsSsl() .

但这两者有什么关系,它们是等价的吗?是否QT_NO_SSL <=> QSslSocket::supportsSsl() returns false持有还是有可能QT_NO_SSL未定义,但 QSslSocket::supportsSsl()返回错误?

最佳答案

可以编译 Qt(至少有 OpenSSL 后端):

  1. 没有 SSL 支持 -- QT_NO_SSL 定义,SSL 类甚至不可用于编译;
  2. 在运行时加载 SSL 支持 => 编译时必须存在 OpenSSL header ,但 QtNetwork 不会链接到 libssl/libcrypto/...;相反,它会在运行时dlopen那些库来寻找它需要的功能;
  3. 具有从 QtNetwork 链接的 SSL 支持。

之所以如此,是因为将 QtNetwork 链接到加密库会在从/向美国重新分发方面引发法律问题。对于#3,您必须拥有 SSL 库,否则您的应用程序将无法启动,即使您根本不需要 SSL;并且 Qt 安装程序无法“轻松”运送这些 SSL 库。因此,Qt 在配置 #2 中编译,有责任安装 OpenSSL。

QT_NO_SSL 未定义但 QSslSocket::supportsSsl() 返回 false 的场景是 #2(例如,如果 Qt 无法找到或加载合适的 SSL库)。

关于ssl - QT_NO_SSL 与 QSslSocket::supportsSsl() 的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35035508/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com