c++ - QNetworkAccessManager 在 arch 上给出 ssl 错误

标签 c++ linux qt archlinux

我想使用 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/

相关文章:

c++ - USN中的文件引用号返回空

c++ - mkdir in/tmp 不工作 : "Permission Denied"

c++ - 为什么我在编译时会收到有关在代码中丢弃限定符的 g++ 错误?

python - 如何在 Python2.7 的 Debian 环境中安装 pyautogui?

python - 使用 QtQuick.Controls 中的任何内容都会引发 protected 模块错误

android - QtCreator android 不会部署

c++ - 未使用与类相同的名称调用函数

linux - 对脚本的一点帮助

linux - Systemtap 不显示内核函数中的所有局部变量

ruby-on-rails - 无法在 Debian 上安装 Capybara-Webkit