Hed*_*dge 6 c++ linker qt header-files
我在我的QT项目中添加了一个IcecastServer类,将头文件添加到pro文件中并添加了一些代码.每次我编译它时都会发生以下错误:
release/icecastserver.o:icecastserver.cpp :(.text + 0x39):未定义引用
_imp___ZN10QTcpServerC1EP7QObject' release/icecastserver.o:icecastserver.cpp:(.text+0x50): undefined reference to
imp ZN12QHostAddressC1ENS_14SpecialAddressE'发布/ 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
imp ZN12QHostAddressD1Ev'release/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
imp ZN12QHostAddressD1Ev'release/icecastserver.o的_imp___ZNK10QTcpServer11errorStringEv' release/icecastserver.o:icecastserver.cpp:(.text+0x858): undefined reference to
未定义引用:icecastserver.cpp :(.text + 0x521):未定义引用_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
Run Code Online (Sandbox Code Playgroud)
这是源文件:
#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;
}
}
Run Code Online (Sandbox Code Playgroud)
首先,你需要在#include <QHostAddress>
某个地方假设注释掉的行是造成问题的原因.
您还可以检查一些项目设置,看看您是否拥有所有正确的输入.
编辑:更多细节
QtNetwork需要QT网络lib输入.假设你再次使用QtCreator,因为提供的信息不多,那么这意味着在.pro文件中你需要有这样一行:
QT += network
然后确保在使用之前为所使用的对象包含正确的标题.如果你仍然得到未定义的引用,链接错误等尝试QMake
并重建.如果它仍然存在,除了QT使用错误之外,您的代码中可能还有错误,并且应该验证您正在使用的方法和对象是否已正确声明.
最终编辑:很高兴有效......
在QTCreator中创建新项目时,向导中有一个步骤,您可以在其中检查要包含的各种QT库,这些库将为您添加这些.pro行和输入.这是输入其他lib文件的QT版本,默认情况下它们将静态链接我相信.如果要动态链接共享对象或DLL,则需要一些额外的配置步骤.
归档时间: |
|
查看次数: |
15551 次 |
最近记录: |