我想使用 QNetworkAccessManager 通过 https 访问页面,但是当我尝试它时,我得到以下输出:
qt.network.ssl: QSslSocket: cannot resolve CRYPTO_num_locks
qt.network.ssl: QSslSocket: cannot resolve CRYPTO_set_id_callback
qt.network.ssl: QSslSocket: cannot resolve CRYPTO_set_locking_callback
qt.network.ssl: QSslSocket: cannot resolve ERR_free_strings
qt.network.ssl: QSslSocket: cannot resolve EVP_CIPHER_CTX_cleanup
qt.network.ssl: QSslSocket: cannot resolve EVP_CIPHER_CTX_init
qt.network.ssl: QSslSocket: cannot resolve sk_new_null
qt.network.ssl: QSslSocket: cannot resolve sk_push
qt.network.ssl: QSslSocket: cannot resolve sk_free
qt.network.ssl: QSslSocket: cannot resolve sk_num
qt.network.ssl: QSslSocket: cannot resolve sk_pop_free
qt.network.ssl: QSslSocket: cannot resolve sk_value
qt.network.ssl: QSslSocket: cannot resolve SSL_library_init
qt.network.ssl: QSslSocket: cannot resolve SSL_load_error_strings
qt.network.ssl: QSslSocket: cannot resolve SSL_get_ex_new_index
qt.network.ssl: QSslSocket: cannot resolve SSLv2_client_method
qt.network.ssl: QSslSocket: cannot resolve SSLv3_client_method
qt.network.ssl: QSslSocket: cannot resolve SSLv23_client_method
qt.network.ssl: QSslSocket: cannot resolve SSLv2_server_method
qt.network.ssl: QSslSocket: cannot resolve SSLv3_server_method
qt.network.ssl: QSslSocket: cannot resolve SSLv23_server_method
qt.network.ssl: QSslSocket: cannot resolve X509_STORE_CTX_get_chain
qt.network.ssl: QSslSocket: cannot resolve OPENSSL_add_all_algorithms_noconf
qt.network.ssl: QSslSocket: cannot resolve OPENSSL_add_all_algorithms_conf
qt.network.ssl: QSslSocket: cannot resolve SSLeay
qt.network.ssl: QSslSocket: cannot resolve SSLeay_version
qt.network.ssl: QSslSocket: cannot call unresolved function CRYPTO_num_locks
qt.network.ssl: QSslSocket: cannot call unresolved function CRYPTO_set_id_callback
qt.network.ssl: QSslSocket: cannot call unresolved function CRYPTO_set_locking_callback
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init
qt.network.ssl: QSslSocket: cannot call unresolved function SSLeay
qt.network.ssl: QSslSocket: cannot call unresolved function SSLeay_version
我使用的是 arch x86_64 和 QT 5.9。
在终端输入:openssl version -v
我得到了
OpenSSL 1.1.0f 2017 年 5 月 25 日
,所以它是最新的。
我还添加到 main.cpp 中:
qDebug() << "SSL version use for build "
<< QSslSocket::sslLibraryBuildVersionString();
qDebug() <<"SSL version use for run-time "
<< QSslSocket::sslLibraryVersionNumber();
我得到了以下信息:
SSL version use for build: "OpenSSL 1.0.1e-fips 11 Feb 2013"
SSL version use for run-time: 0
您有什么建议可以解决这个问题吗?
最佳答案
检查主机上安装的 OpenSSL
版本
QNetworkAccessManager
尝试在运行时加载的库中查找函数。
很可能您安装了旧版本的 OpenSSL
。
同时检查这个 thread关于 Qt
vs OpenSSL
编译时/运行时依赖性
关于c++ - QNetworkAccessManager 在 arch 上给出 ssl 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44306605/