Seite 1 von 1

[gelöst] emit Funktion undefined reference

Verfasst: 11. April 2010 17:42
von 24dan
Was mach ich falsch?
Ich habe mir ein SIGNAL in einer Klasse eingerichtet, beim Benutzen des Signals im Source Code der Klasse bekomme ich immer die Fehlermeldung:

undefined reference to vtable for ....

Hier mal der entscheidenen Header Teil:

Code: Alles auswählen

#ifndef AUSWERTUNG_H
#define AUSWERTUNG_H
class Auswertung : public QObject{

    Q_OBJECT

public:

      Auswertung();
      ~Auswertung();
      void test();

signals:
      void meldungsDienst(int type,
                          QString meldung);
};

#endif // AUSWERTUNG_H

Und hier das CPP File:

Code: Alles auswählen

#include <QtGui>
//#include <QtNetwork>

#include "auswertung.h"

Auswertung::Auswertung() : QObject()
{
}

Auswertung::~Auswertung()
{
}

void Auswertung::test(){
   emit meldungsDienst(0,"test");
}

Verfasst: 11. April 2010 17:48
von Christian81
Der Header ist nicht in HEADERS in der pro-Datei aufgeführt... Foren-Suche würde da helfen.

Verfasst: 11. April 2010 18:05
von 24dan
Meine Pro Datei enthält zumindestens diesen Eintrag:
  • HEADERS += mainwindow.h \
    auswertung.h \
:roll:

Verfasst: 11. April 2010 18:20
von Christian81
Wie ist der genaue Linker-Fehler?

Verfasst: 11. April 2010 18:23
von 24dan
  • ./debug\auswertung.o:C:\Dokumente und Einstellungen\Video\Eigene Dateien\Adler/auswertung.cpp:28: undefined reference to `Auswertung::meldungsDienst(int, QString)'
    collect2: ld returned 1 exit status
    mingw32-make[1]: Leaving directory `C:/Dokumente und Einstellungen/Video/Eigene Dateien/Adler'
    mingw32-make: Leaving directory `C:/Dokumente und Einstellungen/Video/Eigene Dateien/Adler'
    mingw32-make[1]: *** [debug\Adler.exe] Error 1
    mingw32-make: *** [debug] Error 2
    Beendet mit Rückgabewert 2.
    Fehler beim Erstellen des Projekts Desktop
    Beim Ausführen des Build-Schritts ''

Verfasst: 11. April 2010 18:29
von 24dan
Ich habe das SIGNAL emit mal raus genommen:
Die Kompilierung scheitert schon am Macro Q_OBJECT :roll:

Unter debug/ ist meine moc_auswertung.cpp auch komplett leer?!?

Verfasst: 11. April 2010 18:45
von kater
qmake neu ausgeführt?

Verfasst: 11. April 2010 18:54
von 24dan
Danke ja...

Habe das Projekt neu erstellen lassen
bereinigt und auch qmake neu ausgeführt....

Q_OBJECT rein und das system crashed....

Verfasst: 11. April 2010 19:02
von Christian81
Wie immer super Fehlermeldung von Dir...

Verfasst: 11. April 2010 19:25
von franzf
Q_OBJECT muss im Header stehen BEVOR du qmake myproject.pro ausführst. also nochmal qmake laufen lassen und gut ist. Aber vorher bitte nicht Q_OBJECT rausnehmen...

Und du bist dir im Klaren, dass du gerade private von QObject erbst?

Verfasst: 11. April 2010 23:37
von 24dan
Christian81 hat geschrieben:Wie immer super Fehlermeldung von Dir...
Q_OBJECT rein und das system crashed....
Die Fehlermeldung ist immer noch die gleiche wie oben.

Verfasst: 12. April 2010 09:09
von franzf
24dan hat geschrieben:Die Fehlermeldung ist immer noch die gleiche wie oben.
Schau auf den Post zwischen dem von Christian und deinem, da steht die Lösung...

Verfasst: 12. April 2010 11:24
von 24dan
franzf hat geschrieben:
24dan hat geschrieben:Die Fehlermeldung ist immer noch die gleiche wie oben.
Schau auf den Post zwischen dem von Christian und deinem, da steht die Lösung...
Hatte gestern nicht mehr die Zeit ... War genau die richtige Lösung.
Läuft jetzt.
The Q_OBJECT macro is expanded by the preprocessor to declare several member functions that are implemented by the moc; if you get compiler errors along the lines of "undefined reference to vtable for LcdNumber", you have probably forgotten to run the moc or to include the moc output in the link command.
:lol: