微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试编译时QT未定义参考错误

如何解决尝试编译时QT未定义参考错误

| 我在QT项目中添加一个IcecastServer类,将头文件添加到了pro文件中,并添加了一些代码。每次我编译它时,都会发生以下错误:   release / icecastserver.o:icecastserver.cpp :(。text + 0x39):对reference0ѭimpZN12QHostAddressC1ENS_14SpecialAddressE\的未定义引用   release / icecastserver.o:icecastserver.cpp :(。text + 0x68):对
_imp___ZN10QTcpserver6listenERK12QHostAddresst\'
  release/icecastserver.o:icecastserver.cpp:(.text+0x73): undefined reference to
_imp_ZN12QHostAddressD1Ev\的未定义引用   release / icecastserver.o:icecastserver.cpp :(。text + 0x9d):对
_imp___ZNK10QTcpserver11errorStringEv\'
  release/icecastserver.o:icecastserver.cpp:(.text+0x3d4): undefined reference to
impZN12QHostAddressD1Ev\的未定义引用   版本/icecastserver.o:icecastserver.cpp:(.text+0x4bd):对
_imp___ZN10QTcpserverC1EP7QObject\'
  release/icecastserver.o:icecastserver.cpp:(.text+0x4d4): undefined reference to
_imp_ZN12QHostAddressC1ENS_14SpecialAddressE\'的未定义引用   release / icecastserver.o:icecastserver.cpp :(。text + 0x4ec):对
_imp___ZN10QTcpserver6listenERK12QHostAddresst\'
  release/icecastserver.o:icecastserver.cpp:(.text+0x4f7): undefined reference to
impZN12QHostAddressD1Ev\的未定义引用   版本/icecastserver.o:icecastserver.cpp:(.text+0x521):对
_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;
    }

}
    

解决方法

首先,您需要在某个地方加上“ 8”字样,并假设引起问题的原因是注释掉的行。 您还可以检查一些项目设置,以查看是否具有所有正确的输入。 编辑:更多细节 QtNetwork需要QT网络库输入。再次假设您正在使用QtCreator,因为没有提供太多信息,那么这意味着在.pro文件中,您需要像下面这样一行:
QT += network
然后,在使用对象之前,请确保为它们包含正确的标题。如果仍然收到未定义的引用,链接错误等,请尝试按ѭ10并重新构建。如果它仍然存在,那么除了QT使用错误之外,您的代码中可能还存在其他错误,并且应该验证所使用的方法和对象是否已正确声明。 最终编辑:很高兴... 在QTCreator中创建新项目时,向导中会执行一个步骤,您可以在其中选中要包括的各种QT库,这些库将为您添加这些.pro行和输入。这是输入其他lib文件的QT版本,默认情况下,它们会被静态链接。如果要动态链接共享对象或dll,则有一些额外的配置步骤。     ,您是否正在头文件上运行
moc
工具?随后您要编译
moc
工具的输出吗?     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。