有一个 define QT_NO_SSL
,如果没有找到 Ssl 库则定义。还有方法QSslSocket::supportsSsl()
。
但是这两者有什么关系,它们是等价的吗?是否QT_NO_SSL <=> QSslSocket::supportsSsl() returns false
保持或是否有可能QT_NO_SSL
未定义但QSslSocket::supportsSsl()
返回 false?
有一个 define QT_NO_SSL
,如果没有找到 Ssl 库则定义。还有方法QSslSocket::supportsSsl()
。
但是这两者有什么关系,它们是等价的吗?是否QT_NO_SSL <=> QSslSocket::supportsSsl() returns false
保持或是否有可能QT_NO_SSL
未定义但QSslSocket::supportsSsl()
返回 false?
可以编译 Qt(至少使用 OpenSSL 后端):
QT_NO_SSL
定义,SSL 类甚至不能用于编译;libssl
// libcrypto
...;相反,它会dlopen
在运行时让那些库寻找它需要的功能;其原因与将 QtNetwork 链接到密码库会在从/到美国的再分配方面带来法律问题的事实有关。使用#3,您必须拥有 SSL 库,否则您的应用程序将无法启动,即使您根本不需要 SSL;并且 Qt 安装程序无法“轻松”发布这些 SSL 库。因此,Qt 在配置 #2 中编译,您有责任安装 OpenSSL。
QT_NO_SSL
未定义但返回 false的场景QSslSocket::supportsSsl()
是 #2(例如,如果 Qt 无法找到或加载合适的 SSL 库)。