Qt要求在系统上安装开放的ssl库。在debian / ubuntu中,当我使用apt安装open ssl时,一切正常。但是当我在Windows中编译我的应用程序时,SSL功能不可用我可以通过执行
来验证这一点QSslSocket::supportsSsl()
如何让它在Windows中运行?我从http://www.slproweb.com/products/Win32OpenSSL.html下载并安装了open ssl,但它仍然返回false。
答案 0 :(得分:15)
所以很长一段时间后我才知道问题是什么:
这两个库需要与Windows系统文件夹中的可执行文件位于同一文件夹中(我认为是system32):
libeay32.dll
ssleay32.dll
你会在你的OpenSSL文件夹的\ bin中找到它们,因为我在那里复制了这两个库它
重要事项:部署到客户端计算机时,还需要安装用于编译这些.dll的vcredist软件包,这可能与运行应用程序本身所需的vcredist软件包不同。 vcredist版本取决于库的版本。
答案 1 :(得分:8)
您必须在项目中添加OpenSSL lib。在Windows Qt中没有OpenSSL lib。 (我认为这是一个法律问题)。您可以在发布的URI中找到OpenSSL开发人员库。如果您正在编译32位框架,那么您需要下载的是 Win32 OpenSSL v1.0.1e
这就是我项目中的内容。
QT += core gui network
win32{
LIBS += -LC:/OpenSSL-Win32/lib -lubsec
INCLUDEPATH += C:/OpenSSL-Win32/include
}
答案 2 :(得分:1)
您已经知道,您缺少dll。这是更多信息
检查所需的ssl版本
QSslSocket::sslLibraryBuildVersionString();
对于ssl 1.0.x(qt <5.12.4),您可能会丢失libeay32.dll和ssleay32.dll。
对于ssl 1.1.x(qt> = 5.12.4),二进制兼容性中断了(qt 5.12.4 released),因此您可能需要libssl-1_1.dll和libcrypto-1_1.dll及其依赖项capi.dll和dasync。 dll。