如果找不到Ssl库,则定义QT_NO_SSL
。
还有方法QSslSocket::supportsSsl()
。
但这两者如何相关,它们是否相同?
QT_NO_SSL <=> QSslSocket::supportsSsl() returns false
是否成立{或者{}未定义,QT_NO_SSL
是否会返回false?
答案 0 :(得分:4)
Qt(至少使用OpenSSL后端)可以编译:
QT_NO_SSL
已定义,SSL类甚至无法用于编译; libssl
/ libcrypto
/ ...;相反,它会dlopen
那些库在运行时寻找它需要的功能; 其原因在于,将QtNetwork链接到加密库会在向/向美国的再分配方面带来法律问题。使用#3,必须拥有SSL库,否则您的应用程序将无法启动,即使您根本不需要SSL;和Qt安装程序无法“轻松”运送这些SSL库。因此,Qt在配置#2中编译而你负责安装OpenSSL。
未定义QT_NO_SSL
但QSslSocket::supportsSsl()
返回false的情况为#2(例如,如果Qt无法找到或加载合适的SSL库)。