gpt4 book ai didi

c++ - 尝试编译时出现QT undefined reference 错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:25:43 25 4
gpt4 key购买 nike

我在我的 QT 项目中添加了一个 IcecastServer 类,在 pro 文件中添加了头文件并添加了一些代码。每次编译都会出现以下错误:

release/icecastserver.o:icecastserver.cpp:(.text+0x39): undefined reference to _imp___ZN10QTcpServerC1EP7QObject'
release/icecastserver.o:icecastserver.cpp:(.text+0x50): undefined reference to
impZN12QHostAddressC1ENS_14SpecialAddressE' release/icecastserver.o:icecastserver.cpp:(.text+0x68): undefined reference to _imp___ZN10QTcpServer6listenERK12QHostAddresst'
release/icecastserver.o:icecastserver.cpp:(.text+0x73): undefined reference to
_imp
_ZN12QHostAddressD1Ev' release/icecastserver.o:icecastserver.cpp:(.text+0x9d): undefined reference to _imp___ZNK10QTcpServer11errorStringEv'
release/icecastserver.o:icecastserver.cpp:(.text+0x3d4): undefined reference to
impZN12QHostAddressD1Ev' release/icecastserver.o:icecastserver.cpp:(.text+0x4bd): undefined reference to _imp___ZN10QTcpServerC1EP7QObject'
release/icecastserver.o:icecastserver.cpp:(.text+0x4d4): undefined reference to
_imp
_ZN12QHostAddressC1ENS_14SpecialAddressE' release/icecastserver.o:icecastserver.cpp:(.text+0x4ec): undefined reference to _imp___ZN10QTcpServer6listenERK12QHostAddresst'
release/icecastserver.o:icecastserver.cpp:(.text+0x4f7): undefined reference to
impZN12QHostAddressD1Ev' release/icecastserver.o:icecastserver.cpp:(.text+0x521): undefined reference to _imp___ZNK10QTcpServer11errorStringEv'
release/icecastserver.o:icecastserver.cpp:(.text+0x858): undefined reference to
_imp
_ZN12QHostAddressD1Ev'

我做错了什么?

这是头文件:

#ifndef ICECASTSERVER_H
#define ICECASTSERVER_H

#include <QObject>

QT_BEGIN_NAMESPACE
class QTcpServer;
QT_END_NAMESPACE

class IcecastServer : public QObject
{
Q_OBJECT
public:
explicit IcecastServer(QObject *parent = 0);

signals:

public slots:

private:
QTcpServer *tcpServer;
};

#endif // ICECASTSERVER_H

这是源文件:

#include "icecastserver.h"
#include "QDebug"
#include <QtNetwork/QTcpServer>
#include <QtGui>

IcecastServer::IcecastServer(QObject *parent) :
QObject(parent)
{

tcpServer = new QTcpServer(this);
//tcpServer->listen(QHostAddress::Any,8000);

if (!tcpServer->listen()){
QMessageBox::critical(NULL, tr("Fortune Server"), tr("Unable to start the server: %1.").arg(tcpServer->errorString()));

return;
}

}

最佳答案

首先你需要#include <QHostAddress>某处假设注释掉的行是导致问题的原因。

您还可以检查一些项目设置,看看您是否拥有所有正确的输入。

编辑:更多细节

QtNetwork 需要 QT 网络库输入。再次假设您正在使用 QtCreator,因为没有提供太多信息,那么这意味着在您的 .pro 文件中您需要有这样一行:

QT += network

然后确保在使用它们之前为您正在使用的对象包含正确的标题。如果您仍然遇到 undefined reference 、链接错误等,请尝试 QMake并重建。如果它仍然存在,除了 QT 使用错误之外,您的代码中可能还有错误,并且应该验证您使用的方法和对象是否已正确声明。

最终编辑:很高兴能奏效......

当您在 QTCreator 中创建新项目时,向导中有一个步骤,您可以在其中勾选要包含的各种 QT 库,这些库将为您添加这些 .pro 行和输入。这是输入额外 lib 文件的 QT 版本,我相信默认情况下它们将被静态链接。如果您想动态链接共享对象或 dll,则需要一些额外的配置步骤。

关于c++ - 尝试编译时出现QT undefined reference 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5656824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com