Qt 5.4錯誤"qt.network.ssl: QSslSocket: cannot call"


寫個FTP程序運行后提示:

 

代碼如下:

// 上傳文件

void FtpManager::put(const QString &fileName, const QString &path)
{
    QFile file(fileName);
    file.open(QIODevice::ReadOnly);
    QByteArray data = file.readAll();
    m_pUrl.setPath(path);
    qDebug()<<"path:"<<path;
    QNetworkReply *pReply = m_manager.put((QNetworkRequest)m_pUrl, data);
    qDebug()<<"url :"<<m_pUrl;
    //connect(pReply, SIGNAL(uploadProgress(qint64, qint64)), this, SIGNAL(uploadProgress(qint64, qint64)));
    connect(pReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SIGNAL(error(QNetworkReply::NetworkError)));
    connect(pReply,SIGNAL(finished()),this,SLOT(finished()));
    connect(pReply,SIGNAL(bytesWritten(qint64)),this,SLOT(onDataWrite(qint64)));
}

應該是這”句代碼“QNetworkReply *pReply = m_manager.put((QNetworkRequest)m_pUrl, data);“引起的

搜索發現:帖子:

今天研讀QQStars(http://www.qtcn.org/bbs/read.php?tid-57944.html)時,發現這個軟件登陸不上,總是提示:

    qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error

    qt.network.ssl: QSslSocket: cannot call unresolved function TLSv1_client_method

    qt.network.ssl: QSslSocket: cannot call unresolved function SSL_CTX_new

    qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init

    qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error

    上網搜了半天,都說要在電腦那里安裝openssl,然后把C:\OpenSSL-Win64\bin下的libeay32.dll和ssleay32.dll拷貝到D:\Qt\Qt5.4.2\5.4\mingw491_32\bin,然后編譯就能用。

    然而並沒什么卵用!

    無奈之下,我只好用QtCreator3.30進入調試模式,一步步看,看是哪里出了問題。然后讓我開心的事情出現了,按登陸的時候並沒有出現上面那些錯誤提示!也就是說,在調試模式下,Qt是加載得了libeay32.dll和ssleay32.dll的。那它加載的是不是和我提供的不一樣呢?

    把調試日志調出來看了一下,發現了Qt加載的這兩個庫,是Qt自帶的!路徑是:D:\Qt\Qt5.4.2\Tools\mingw491_32\opt\bin。

    最后,我把這個目錄下的兩個dll拷貝到D:\Qt\Qt5.4.2\5.4\mingw491_32\bin,再運行就沒有報錯了!

    弄了半天,原來是版本不對,Qt用的openssl版本和我上官網下的不一樣,如果我把所有版本嘗試了,估計也會成功。不過能夠通過這樣快捷的方法解決問題,實屬良方,以后也要多多用調試器來解決問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM