对'QNetworkAccessManager'的未定义引用

undefined reference to 'QNetworkAccessManager'

本文关键字:引用 未定义 QNetworkAccessManager      更新时间:2023-10-16

我是QT API和QT IDE的新手,我遵循了本教程: http://developer.nokia.com/community/wiki/Creating_an_HTTP_network_request_in_Qt,但是当我尝试编译时出现此错误,问题的通常原因是:编译器无法 找到方法代码所在的 .cpp/.lib 存档,但在这种情况下,API 已经配置完毕,我不明白为什么会出现此错误,也找不到项目属性,这是我的测试代码:

#include <QMainWindow>
#include <QUrl>
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>

这是包含在 MainWindow.hpp 文件(现在是 MainWindow.cpp)上的标头:

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QNetworkAccessManager* nam;
    nam = new QNetworkAccessManager(this);
    QObject::connect(nam, SIGNAL(finished(QNetworkReply*)),
         this, SLOT(finishedSlot(QNetworkReply*)));
    QUrl url("http://www.forum.nokia.wiki");
    QNetworkReply* reply = nam->get(QNetworkRequest(url));
}

完成老虎机方法:

void MainWindow::finishedSlot(QNetworkReply* reply)
{
    //nothing
}

所以这是代码,如果有人可以帮忙,我会感谢你:)

.pro 项目文件中有QT += network吗?

编辑:修复了拼写错误,是配置而不是QT

我通过将以下行附加到 CMakeList .txt 为 CMake 解决了这个问题:

find_package(Qt5Network REQUIRED)
target_link_libraries(${PROJECT_NAME} Qt5::Network)

如果您使用的是 Cmake,只需将 ${QT_QTNETWORK_LIBRARY} 添加到TARGET_LINK_LIBRARIES。