Unresolved Links bei Signals und Slots trotz Q_OBJECT
Verfasst: 1. August 2008 08:32
Ich habe eine Thread Klasse "GratingVariation" die bislang in der Header Datei von der Klasse "DialogGratingPeriodVariation" oben mitdrinstand. Das funktionierte wunderbar. Dabei steht in beiden Klassen ein 'Q_OBJECT'.
Um den Code übersichtlicher zu machen habe ich den Thread Code in eine weitere Headerdatei "GratingVariationThread.h" ausgelagert, die jetzt so aussieht:
diese Headerdatei wird jetzt von DialogGratingPeriodVariation.h eingebunden.
Und jetzt wird der Code nicht mehr gelinkt. Ich bekomme nämlich bei allen Signals und Slots einen Linker Fehler
Aber vielleicht habe ich ja auch ein Grundkonzept nicht verstanden und benötige eine Erklärung.
Matthias
Um den Code übersichtlicher zu machen habe ich den Thread Code in eine weitere Headerdatei "GratingVariationThread.h" ausgelagert, die jetzt so aussieht:
Code: Alles auswählen
#include <QtCore/QThread>
class GratingVariation : public QThread
{
Q_OBJECT
public:
...
Und jetzt wird der Code nicht mehr gelinkt. Ich bekomme nämlich bei allen Signals und Slots einen Linker Fehler
Sicherlich mache ich etwas falsch, aber ich sehe nicht was, denn ich habe den Code ja nur in eine Headerdatei ausgelagert.1>DialogGratingPeriodVariation.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""protected: void __thiscall GratingVariation::signalNewImageCreated(int)" (?signalNewImageCreated@GratingVariation@@IAEXH@Z)".
1>DialogGratingPeriodVariation.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""protected: void __thiscall GratingVariation::ThreadStopped(void)" (?ThreadStopped@GratingVariation@@IAEXXZ)".
1>DialogGratingPeriodVariation.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""protected: void __thiscall GratingVariation::NewImageAvailable(void)" (?NewImageAvailable@GratingVariation@@IAEXXZ)".
1>DialogGratingPeriodVariation.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual int __thiscall GratingVariation::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@GratingVariation@@UAEHW4Call@QMetaObject@@HPAPAX@Z)".
1>DialogGratingPeriodVariation.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual void * __thiscall GratingVariation::qt_metacast(char const *)" (?qt_metacast@GratingVariation@@UAEPAXPBD@Z)".
1>DialogGratingPeriodVariation.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual struct QMetaObject const * __thiscall GratingVariation::metaObject(void)const " (?metaObject@GratingVariation@@UBEPBUQMetaObject@@XZ)".
Aber vielleicht habe ich ja auch ein Grundkonzept nicht verstanden und benötige eine Erklärung.
Matthias