При попытке запустить приложение Qt появляется следующая ошибка:
qt.network.ssl: QSslSocket :: connectToHostEncrypted: сбой инициализации TLSqt.network.ssl: QSslSocket :: connectToHostEncrypted: инициализация TLS не удаласьОшибка: «инициализация TLS не удалась»
Мое приложение действительно простое, вот как оно выглядит:
#include "widget.h"
#include "ui_widget.h"
#include <QNetworkReply>
#include <QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
netManager = new QNetworkAccessManager(this);
netReply = nullptr;
mDataBuffer = new QByteArray();
//Define network request
QNetworkRequest request;
request.setUrl(QUrl("https://www.qt.io"));
netReply = netManager->get(request);
connect(netReply,&QIODevice::readyRead,this,&Widget::dataReadyToRead);
connect(netReply,&QNetworkReply::finished,this,&Widget::dataReadFinished);
}
Widget::~Widget()
{
delete ui;
}
void Widget::dataReadyToRead()
{
qDebug() << "Datas available to read";
mDataBuffer->append(netReply->readAll());
}
void Widget::dataReadFinished()
{
if(netReply->error())
{
qDebug() << "Error: " << netReply->errorString();
}
else
{
ui->textEdit->setPlainText(QString(*mDataBuffer));
}
}
Поэтому я искал переполнение стека и нашел несколько ответов (онокажется, что ошибка возникает из-за того, что библиотеки openSSl не найдены), но все равно не работает. Итак, вот что я сделал до сих пор:
- Я скачал OpenSSL для 64-битного окна (Win64 OpenSSL v1.1.1d) на этом сайте: https://slproweb.com/products/Win32OpenSSL.html
- Я установил OpenSSL (- Попробуйте установить переменные окружения, но мне не удалось сделать это правильно)
- Попробуйте запустить мое приложение при запуске openSSL
Я что-то пропустил?
Редактировать:
Спасибо за ответ:
Вот что получается из qDebugs:
QSslSocket ::sslLibraryBuildVersionString () вернул: «OpenSSL 1.0.2p 14 августа 2018»
QSslSocket :: supportSsl () вернул: false
QSslSocket ::sslLibraryVersionString () возвратил: пустую строку
Итак, я взял и установил OpenSSL в версии 1.0.2, (удалите другую), добавьте в переменную PATH установкупапка (которая просто C: \ OpenSSL-Win64, также пробовал C: \ OpenSSL-Win64 \ bin оба этих файла содержит dll)
К сожалению, я до сих пор хЕсть такая же проблема.
Содержимое папки установки:
- bin
- exp
- include
- lib
- changes.txt
- faq.txt
- libeay32.dll
- libssl.dll
- license.txt
- news.txt
- readme.txt
- ssleay32.dll
- unins000.dat
- unins000.exe
Сейчас я попробовалсделать кое-что после того, как я прочел документацию Qt: https://doc.qt.io/qt-5/windows-requirements.html
- Я копирую / вставляю каталог OpenSSL-Win64 в C: \ Windows \ System32 (в соответствии с документацией сначала ищутся библиотеки openSSLв этом каталоге) -> не работает
- Я создал переменную среды PATH и присвоил ей значение установочной папки openSSL (сейчас я использую переменную среды Path, созданную по умолчанию), он переопределил значение по умолчанию, но мне удалось его восстановить) -> не сработало