QT_NO_SSL 和 QSslSocket::supportsSsl() 之间的关系
Relation between QT_NO_SSL and QSslSocket::supportsSsl()
有一个定义 QT_NO_SSL
,如果没有找到 Ssl 库则定义它。
还有方法 QSslSocket::supportsSsl()
.
但这两者有什么关系,它们是等价的吗?
QT_NO_SSL <=> QSslSocket::supportsSsl() returns false
成立还是可能 QT_NO_SSL
未定义,但 QSslSocket::supportsSsl()
returns 错误?
可以编译 Qt(至少有 OpenSSL 后端):
- 没有 SSL 支持 --
QT_NO_SSL
已定义,SSL 类 甚至不可用于编译;
- 在运行时加载 SSL 支持 => OpenSSL headers 必须在编译时出现,但 QtNetwork 不会 link 到
libssl
/libcrypto
/。 ..;相反,它将 dlopen
这些库在运行时寻找它需要的函数;
- 支持 SSL link来自 QtNetwork。
这样做的原因与这样一个事实有关,即 link将 QtNetwork 转换为密码库会在美国重新分发 from/to 方面引发法律问题。对于#3,您必须 拥有 SSL 库,否则您的应用程序将无法启动,即使您根本不需要 SSL; Qt 安装程序无法 "easily" 提供这些 SSL 库。因此,Qt 在配置 #2 中编译,你 有安装 OpenSSL 的责任。
未定义 QT_NO_SSL
但 QSslSocket::supportsSsl()
returns false 的场景是 #2(例如,如果 Qt 无法找到或加载合适的 SSL 库)。
有一个定义 QT_NO_SSL
,如果没有找到 Ssl 库则定义它。
还有方法 QSslSocket::supportsSsl()
.
但这两者有什么关系,它们是等价的吗?
QT_NO_SSL <=> QSslSocket::supportsSsl() returns false
成立还是可能 QT_NO_SSL
未定义,但 QSslSocket::supportsSsl()
returns 错误?
可以编译 Qt(至少有 OpenSSL 后端):
- 没有 SSL 支持 --
QT_NO_SSL
已定义,SSL 类 甚至不可用于编译; - 在运行时加载 SSL 支持 => OpenSSL headers 必须在编译时出现,但 QtNetwork 不会 link 到
libssl
/libcrypto
/。 ..;相反,它将dlopen
这些库在运行时寻找它需要的函数; - 支持 SSL link来自 QtNetwork。
这样做的原因与这样一个事实有关,即 link将 QtNetwork 转换为密码库会在美国重新分发 from/to 方面引发法律问题。对于#3,您必须 拥有 SSL 库,否则您的应用程序将无法启动,即使您根本不需要 SSL; Qt 安装程序无法 "easily" 提供这些 SSL 库。因此,Qt 在配置 #2 中编译,你 有安装 OpenSSL 的责任。
未定义 QT_NO_SSL
但 QSslSocket::supportsSsl()
returns false 的场景是 #2(例如,如果 Qt 无法找到或加载合适的 SSL 库)。