我有一个读取网页的课程。它在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();
}
如您所见,它被剥离到最低限度,在调试模式下工作。
答案 0 :(得分:0)
将 libeay32 和 ssleay32 复制到您的程序所在的文件夹中。