QUdpSocket, Linker Problem, DevC++
Verfasst: 15. Januar 2007 15:56
Hallo,
ich muss heute mein erstes Programm mit C++ und QT schreiben. Nach dem Kompilieren meines Programms (eine main.cpp, und eine Klasse, aufgeteilt in eine .h und eine .cpp Datei) bekomme ich diese Fehler vom Linker:
Das ganze ist nicht vollständig kopiert und die Verzeichnisse habe ich im obigen Code entfernt, um ihn lesbarer zu machen. Die wesentlichen Link Fehler sollten aber erkennbar sein. Bei den anderen Link-Fehlern handelt es sich nämlich um die gleichen Fehler in anderen Funktionen.
CODE AUSZÜGE
wndNetwork.h:
wndNetwork.cpp:
Alle Sourcen liegen in einem Verzeichnis. Wenn ich die Aufrufe von udpSocketRead etc. (damit meine ich nicht die Deklaration in der .h Datei) entferne, erhalte ich keinen Fehler.
Ich hatte auch schon versucht den Socket als Pointer zu deklarieren. Das funktioniert auch nicht. Übrigend verwende ich eigene SLOTs in der Klasse, die auch funktionieren (also Q_OBJECT sollte dann korrekt eingebunden sein). Allerdings ist das wie gesagt mein erstes Program und ich komme mit dem Linker nicht weiter.
Plattform: WinXP, QT4?, DevC++
Danke für die Hilfe!
ich muss heute mein erstes Programm mit C++ und QT schreiben. Nach dem Kompilieren meines Programms (eine main.cpp, und eine Klasse, aufgeteilt in eine .h und eine .cpp Datei) bekomme ich diese Fehler vom Linker:
Code: Alles auswählen
wndNetwork.cpp:22: undefined reference to `_imp___ZN12QHostAddressC1ENS_14SpecialAddressE'
wndNetwork.o(.text+0x19f):wndNetwork.cpp:22: undefined reference to `_imp___ZN10QUdpSocket4bindERK12QHostAddresst'
wndNetwork.o(.text+0x1c4):wndNetwork.cpp:22: undefined reference to `_imp___ZN12QHostAddressD1Ev'
wndNetwork.o(.text+0x1f0):wndNetwork.cpp:22: undefined reference to `_imp___ZN12QHostAddressD1Ev'
wndNetwork.o(.text+0x2b7): In function `ZN10wndNetworkC2Ev':
wndNetwork.cpp:43: undefined reference to `_imp___ZN10QUdpSocketC1EP7QObject'
wndNetwork.o(.text+0x2d6):wndNetwork.cpp:43: undefined reference to `_imp___ZN10QUdpSocketC1EP7QObject'
wndNetwork.o(.text+0xb1f):wndNetwork.cpp:65: undefined reference to `QUdpSocket::~QUdpSocket()'
wndNetwork.o(.text+0xb46):wndNetwork.cpp:65: undefined reference to `QUdpSocket::~QUdpSocket()'
wndNetwork.o(.text+0xc37): In function `ZN10wndNetworkC1Ev':
wndNetwork.cpp:43: undefined reference to `_imp___ZN10QUdpSocketC1EP7QObject'
collect2: ld returned 1 exit status
make.exe: *** [../bin/ExampleProject.exe] Error 1
CODE AUSZÜGE
wndNetwork.h:
Code: Alles auswählen
#ifndef wndNetwork_h
#define wndNetwork_h
#include <QtGui>
#include <QObject>
#include <QtNetwork>
#include <QUdpSocket>
#include <QHostAddress>
class QTimer;
class QUdpSocket;
class wndNetwork : public QDialog
{
Q_OBJECT;
public:
wndNetwork(void);
public slots:
void request();
// ...
private:
// ...
QUdpSocket udpSocketRead;
QUdpSocket udpSocketSend;
QTimer *timer;
};
#endifCode: Alles auswählen
#include "wndNetwork.h"
#include <QtNetwork>
#include <QUdpSocket>
#include <QHostAddress>
static const int TotalBytes = 50 * 1024 * 1024;
static const int PayloadSize = 65536;
void wndNetwork::request()
{
milliseconds = 0;
recived = false;
long t = 0;
udpSocketRead.bind(QHostAddress::LocalHost, 8100);
}
wndNetwork::wndNetwork(void)
{
// ...
}
Ich hatte auch schon versucht den Socket als Pointer zu deklarieren. Das funktioniert auch nicht. Übrigend verwende ich eigene SLOTs in der Klasse, die auch funktionieren (also Q_OBJECT sollte dann korrekt eingebunden sein). Allerdings ist das wie gesagt mein erstes Program und ich komme mit dem Linker nicht weiter.
Plattform: WinXP, QT4?, DevC++
Danke für die Hilfe!