尝试编译时QT未定义的引用错误 [英] QT undefined reference errors when trying to compile

查看:6190
本文介绍了尝试编译时QT未定义的引用错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I added a class IcecastServer to my QT-project, added the header-file to the pro file and added some code. Everytime I compile it the following errors occur:


release / icecastserver.o:icecastserver.cpp :(。+ 0x39):undefined reference到 _imp ___ ZN10QTcpServerC1EP7QObject'
release / icecastserver.o:icecastserver.cpp :(。text + 0x50):未定义引用
imp ZN12QHostAddressC1ENS_14SpecialAddressE'
release / icecastserver.o:icecastserver.cpp :(。text + 0x68):未定义的引用 _imp ___ ZN10QTcpServer6listenERK12QHostAddresst'
release / icecastserver.o:icecastserver.cpp :(。 .text + 0x73):未定义的引用 _imp
_ZN12QHostAddressD1Ev'
release / icecastserver.o:icecastserver.cpp :(。text + 0x9d):未定义引用 _imp ___ ZNK10QTcpServer11errorStringEv'
release / icecastserver.o:icecastserver.cpp :(。text + 0x3d4):未定义引用
imp ZN12QHostAddressD1Ev'
release / icecastserver.o:icecastserver.cpp :(。text + 0x4bd):未定义的引用 _imp ___ ZN10QTcpServerC1EP7QObject'
release / icecastserver.o:icecastserver.cpp :(。 ):未定义引用 _imp
_ZN12QHostAddressC1ENS_14SpecialAddressE'
release / icecastserver.o:icecastserver.cpp :(。text + 0x4ec):未定义引用 _imp ___ ZN10QTcpServer6listenERK12QHostAddresst '
release / icecastserver.o:icecastserver.cpp :(。text + 0x4f7):未定义的引用
imp ZN12QHostAddressD1Ev'
release /icecastserver.o:icecastserver.cpp:(.text+0x521):未定义的引用 _imp ___ ZNK10QTcpServer11errorStringEv'
release / icecastserver.o:icecastserver.cpp :(。text + 0x858):undefined reference到
_imp
_ZN12QHostAddressD1Ev'

release/icecastserver.o:icecastserver.cpp:(.text+0x39): undefined reference to _imp___ZN10QTcpServerC1EP7QObject' release/icecastserver.o:icecastserver.cpp:(.text+0x50): undefined reference toimpZN12QHostAddressC1ENS_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 toimpZN12QHostAddressD1Ev' 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 toimpZN12QHostAddressD1Ev' release/icecastserver.o:icecastserver.cpp:(.text+0x521): undefined reference to _imp___ZNK10QTcpServer11errorStringEv' release/icecastserver.o:icecastserver.cpp:(.text+0x858): undefined reference to_imp_ZN12QHostAddressD1Ev'

我做错了什么? >

What am I doing wrong?

这是标题文件:

#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

这是源文件: / p>

This is the source-file:

#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> 在某处假设已注释掉的行是导致此问题的原因。

First you need to #include <QHostAddress> somewhere assuming that commented out line is what caused the problem.

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

You may also to check some project settings to see if you have all the correct inputs.

编辑:更多细节

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

QtNetwork requires QT network lib inputs. Assuming once again that you are using QtCreator as not much info was provided then this means in your .pro file you need to have a line like so:

QT + = network

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

Then make sure you include the right headers for the objects you are using before using them. If you still get undefined references, linking errors, etc try a QMake and rebuild. If it still persists you probably have errors in your code in addition to QT usage errors and should validate that your methods and objects being used were properly declared.

Final Edit:Glad工作...

Final Glad that worked ...

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

When you create a new project in QTCreator there is a step in the wizard where you can check off the various QT libraries you want to include which will add these .pro lines and inputs for you. This is QT version of inputting additional lib files and by default they will be statically linked I believe. If you want to dynamically link with shared objects or dll then there is some extra configuration steps.

这篇关于尝试编译时QT未定义的引用错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆