QSslSocket错误

时间:2012-07-18 16:59:49

标签: c++ qt

在Windows 7 Ultimate x64的Qt 4.8中,当我尝试通过网络使用QNetworkAccessManagerpost()时:

_net_acc_mgr.post(QNetworkRequest(QUrl(...)),
                  QByteArray(...));

我遇到以下运行时错误:

QSslSocket: cannot resolve OPENSSL_add_all_algorithms_noconf
QSslSocket: cannot resolve OPENSSL_add_all_algorithms_conf
QSslSocket: cannot call unresolved function OPENSSL_add_all_algorithms_noconf
content-type missing in HTTP POST, defaulting to application/octet-stream

我清楚地记得几年前使用的相同代码。但是我忘记了我试过的Qt版本。

在Qt 4.8中还有其他需要与QNetworkAccessManager一起使用吗?

1 个答案:

答案 0 :(得分:1)

  • QT在 32bit

  • 上运行
  • Windows 64位 system32 文件夹没有 DLL OpenSSL 所需,只有 sysWOW64文件夹

  • 要解决此问题,您需要安装二进制版本 OpenSSL 32

针对Windows编译的下载(更新链接):

http://slproweb.com/download/Win32OpenSSL_Light-1_0_1g.exe

  

注意:在安装期间,选择“OpenSSL二进制文件(/ bin)目录”选项(可能C:\OpenSSL-Win32

安装后复制DLL(来自C:\OpenSSL-32%HOMEDRIVE%\OpenSSL-32)发布/调试项目文件夹:

  • 的libeay32.dll
  • libssl32.dll
  • ssleay32.dll

另一种选择是使用 Mingw 64bit ,但不知道这对于 QT 是否可行(这种情况下,如果您可以编译应用程序将仅在64位系统上运行。)