?
Ich versuche folgenden Code zu kompilieren (steht alles in einer main.cpp) und erhalte dabei Fehlermeldungen.
#include <QObject>
class Counter : public QObject {
Q_OBJECT
public:
Counter() { m_value = 0; }
int value() const { return m_value; }
public slots:
void setValue(int value);
signals:
void valueChanged(int newValue);
private:
int m_value;
};
int main () {
Counter a, b;
QObject::connect(&a, SIGNAL(valueChanged(int)), &b, SLOT(setValue(int)));
a.setValue(12);
b.setValue(48);
return 0;
};
Ich nutze die Code::Blocks IDE und mingw, ich hab auch schon Programme die nur Widgets verwenden und nicht definieren erfolgreich kompiliert.
Unter compiler kommt folgende Fehlermeldung:
Project : QT Application
Compiler : GNU GCC Compiler (called directly)
Directory : H:\IT\workspaceCodeBlocks\qtshit\
--------------------------------------------------------------------------------
Switching to target: default
Compiling: main.cpp
Linking executable: H:\IT\workspaceCodeBlocks\qtshit\QTapp.exe
.objs\main.o(.text+0x1c8):main.cpp: undefined reference to Counter::setValue(int)' .objs\\main.o(.text+0x1db):main.cpp: undefined reference toCounter::setValue(int)'
.objs\main.o(.text_ZN7CounterD1Ev[Counter::~Counter()]+0xb):main.cpp: undefined reference to `vtable for Counter'
.objs\\main.o(.text_ZN7CounterC1Ev[Counter::Counter()]+0x20):main.cpp: undefined reference to `vtable for Counter'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 1 seconds)
Unter Compiler Messages stehn vier Zeilen,
main.cpp undefined reference to 'Counter::setValue(int)'
main.cpp undefined reference to 'Counter::setValue(int)'
: main.cpp undefined reference to 'vTable for Counter'
: main.cpp undefined reference to 'vTable for Counter'
die sich scheinbar auf
a.setValue(12);
b.setValue(48);
beziehen.
Ich hab auch versucht im dos-prompt mit
~\qmake -project // erstellt bei mit n qtshit.pro datei
~\qmake -makefile // erstellt makefile, makefile.debug und makefile.release
~\qmake // tut scheinbar nix
~\make // startet die kompilierung und bricht mit fehlermeldung ab
zu kompilieren, aber ohne erfolg.
es gibt da auch n 'moc' Kommando, das scheinbar aus dem Q++ Code C++ code erzeugt, aber damit bin ich auch net weitergekommen.
Ich würde echt gerne mehr mit C++ arbeiten, vor allem QT interessiert mich, aber das treibt mich bisher nur abwechselnd zurück zu Java oder C#(.net). Muss man eigentlich immer soviel Aufwand treiben für C++
Das Problem das sich nach der installation von Qt gar nix tat konnte mit nem doppelklick auf 'configure' gelöst werden (war echt frustrierend als ichs raus hatte, hab auf der platte auch linux, bin trotzdem net drauf gekommen ^^)
Gruß Jay