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 を試したか忘れてしまいました。

QNetworkAccessManagerQt 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

もう 1 つのオプションはMingw 64bitを使用することですが、これがQTで実行可能かどうかはわかりません(この場合、アプリケーションをコンパイルできれば、64 ビット システムでのみ実行されます)。

于 2013-11-28T23:08:31.370 に答える