Сигнал завершения QNetworkAccessManager не генерируется при компиляции в режиме выпуска (VS 2005) - PullRequest
0 голосов
/ 26 января 2011

У меня есть класс, который читает веб-страницы. Он работает, как и ожидалось, когда он построен в режиме отладки в Visual Studio, но не работает, когда он построен в режиме выпуска.

По сути, законченный сигнал QNetworkAccessManager никогда не излучается.

У меня есть код, урезанный до минимума, и он все еще не работает. Я попытался использовать QtNetworkd4.lib в режиме выпуска (та же библиотека, что и в режиме отладки) и отключить оптимизацию, но безрезультатно.

Qt версия 4.4

Редактировать
Вот пример кода.

Заголовок:

#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QStringList>

class WebReader : public QObject{
    Q_OBJECT

public:
    QStringList *pageData_;
    WebReader();
    ~WebReader();
    void fetch(const QString &url);

public slots:
    void slotReplyFinished(QNetworkReply *reply);

protected:
    QNetworkAccessManager *netManager_;

private: 
    QNetworkReply *netReply_;
};

Cpp:

WebReader::WebReader(){
    netManager_ = new QNetworkAccessManager(this);
    pageData_ = NULL;
    connect(netManager_, SIGNAL(finished(QNetworkReply *)), 
                            this, SLOT(slotReplyFinished(QNetworkReply *)));
}
WebReader::~WebReader(){    
}

// Send a request to read a web page
void WebReader::fetch(const QString &url){
    netReply_ = netManager_->get(QNetworkRequest(QUrl(url)));
}

// SLOT that accepts the read data from the webpage
void WebReader::slotReplyFinished(QNetworkReply *reply){
    if (NULL != pageData_){
        delete pageData_;
    }
    pageData_ = new QStringList(QString(reply->readAll()).split(QString("\n")));
    netReply_->deleteLater();
}

Как видите, он урезан до минимума, который работает в режиме отладки.

1 Ответ

0 голосов
/ 11 июля 2015

Скопируйте libeay32 и ssleay32 в одну папку с вашей программой.

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