1

在 Windows 7 Ultimate x64 上的 Qt 4.8 中,当我尝试通过网络使用QNetworkAccessManager某些post()东西时:

_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。

QNetworkAccessManager在 Qt 4.8 中还有什么需要使用的吗?

4

1 回答 1

1
  • QT 在32 位上运行

  • Windows 64 位中,文件夹system32没有OpenSSL 所需的DLL,只有在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 位系统上运行)。

于 2013-11-28T23:08:31.370 回答