QSslSocket не может разрешить и Permission Denied ошибка - PullRequest
0 голосов
/ 25 апреля 2018

Ниже приведены сообщения об ошибках:

qt.network.ssl: QSslSocket: не удается разрешить TLSv1_1_client_method

qt.network.ssl: QSslSocket: не удается разрешить TLSv1_2_client_method

qt.network.ssl: QSslSocket: не удается разрешить TLSv1_1_server_method

qt.network.ssl: QSslSocket: не удается разрешить TLSv1_2_server_method

qt.network.ssl_se_set_set_set_set_set_setse: QSsese_sell_Sse_Sse_Sse_Sse_Sse_Sse_Sse_Sse_Sse_Sse_Sse_Sse_Sse_Sse_Sse_Sse_Sse_Sse_Sse_S_S_S_S_S_S_S_S_S_SNS: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *. Необязательный.*

qt.network.ssl: QSslSocket: не удается разрешить SSL_CTX_set_next_proto_select_cb

qt.network.ssl: QSslSocket: не удается разрешить SSL_get0_next_proto_negotiated

*1011* ql_settoset1018 *

qt.network.ssl: QSslSocket: не удается разрешить SSL_CTX_set_alpn_select_cb

qt.network.ssl: QSslSocket: не удается разрешить SSL_get0_alpn_selected

, я запускаю Windows 7 7 *, я запускаю Windows 7 7openssl 1.1.0 установлен на моем диске D :.И я использую Qt5.9.0

Мой .pro файл

QT += core network
QT -= gui

CONFIG += c++11 console
CONFIG -= app_bundle

# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += main.cpp \
    server.cpp \
    commands.cpp \
    packet.cpp

HEADERS += \
    server.h \
    commands.h \
    packet.h

INCLUDEPATH += D:\OpenSSL-Win32\include\openssl
INCLUDEPATH += D:\OpenSSL-Win32\bin
LIBS += -L D:\OpenSSL-Win32\lib -llibcrypto
LIBS += -L D:\OpenSSL-Win32\lib -llibssl

И это код, который вызывает ошибку:

QString Commands::getPublicIp()
{

    QString temp;

    QNetworkAccessManager networkManager;
    QUrl url("http://api.ipify.org");

    QString query = "format=json";

    url.setQuery(query);

    QNetworkReply* reply = networkManager.get(QNetworkRequest(url));

    QObject::connect(
                reply
                , &QNetworkReply::finished
                , [&](){

                        if(reply->error() != QNetworkReply::NoError) {
                            return QString();
                        } else {
                                QJsonObject jsonObject= QJsonDocument::fromJson(reply->readAll()).object();
                                QHostAddress ip(jsonObject["ip"].toString());

                                temp = QString("002 " + ip.toString());
                        }

                reply->deleteLater();
                }
            );

    return temp;

}

Я продолжал получать qt.network.ssl ошибки, и после ссылки openssl я получаю сообщение об ошибке компиляции:

: - 1: ошибка: не удается найти D: \ OpenSSL-Win32 \ lib: разрешение отклонено

: - 1: ошибка: не удается найти -llibssl

collect2.exe: -1: ошибка: ошибка: ld вернул 1 состояние выхода

Несмотря на то, что в настоящее время я не использую OpenSSLЯ хочу использовать его позже.

1 Ответ

0 голосов
/ 25 апреля 2018
  1. OpenSSL 1.1.0 поддерживается только с Qt 5.10.Пожалуйста, используйте OpenSSL 1.0.2l, вы можете использовать готовый пакет, который соответствует вашему компилятору из npcglib .

  2. Ваши LIBS += включения верны, но этоПохоже, ваш компьютер не имеет разрешения или библиотеки не найдены.Нельзя сказать, почему возникает эта ошибка.Проверьте наличие библиотек в папке и наличие у вашего пользователя доступа.

  3. QNetworkReply *QNetworkAccessManager::get(const QNetworkRequest &request) - это асинхронный вызов.Ваша функция QString Commands::getPublicIp(), вероятно, вернет пустую строку QString до завершения запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...