[QT4] Problem bei Kompilieren von Klassen die von QObject ableiten



  • 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


Anmelden zum Antworten