PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Qt und das Erzeugen der Mocs...



Sym
03-10-2006, 18:10
Hallo,

ich habe ein Problem, wenn ich das Macro Q_Object in einer neuen Klasse einbinde.

So wie es scheint, werden die Mocs nicht erzeugt. Es ist länger her, dass ich mit Qt entwickelt habe. Mein altes Projekt kann ich kompilieren und starten.

Ich habe mittels qmake -project ein .pro-File erzeugt. Dann ein MSVC2005-Project mittels qmake -tp vc. So klappte das vor einigen Monaten eigentlich immer.

Meine Problemklasse:

#include <QObject>

class Tester : public QObject
{
Q_OBJECT

public:
Tester();
virtual ~Tester(void);

public slots:
void selectionChanged(void);

};

Mein .pro-File

TEMPLATE = app
TARGET +=
DEPENDPATH += .
INCLUDEPATH += .

# Input
HEADERS += Tester.h
SOURCES += main.cpp Tester.cpp

Der Fehler:

Tester.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual struct QMetaObject const * __thiscall Tester::metaObject(void)const " (?metaObject@Tester@@UBEPBUQMetaObject@@XZ)".
Tester.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual void * __thiscall Tester::qt_metacast(char const *)" (?qt_metacast@Tester@@UAEPAXPBD@Z)".
Tester.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual int __thiscall Tester::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@Tester@@UAEHW4Call@QMetaObject@@HPAP AX@Z)".

Kommentiere ich das Makro aus, kompiliert die Klasse. Kann mir vielleicht jemand einen Tip geben?

anda_skoa
03-10-2006, 20:42
Du mußt vermutlich nur das VS Project File neu erzeugen, zumindest reicht es im Falle von Makefiles immer diese neu aus dem .pro zu erstellen.

Ciao,
_

Sym
03-10-2006, 22:44
Ja, genau das dachte ich auch. Ich habe sogar bis auf die Sourcen alles entfernt und dann qmake -project und qmake -tp vc aufgerufen. Ich meine mich zu erinnern, dass das vor ein paar Monaten gereicht hat. Doch der Fehler ist immer noch da. :(

Sym
04-10-2006, 00:23
Problem gelöst:

Keine Ahnung warum. Ich habe die Tester-Dateien gelöscht und neu angelegt. Danach klappte es dann.