Aller Anfang ist schwer, wo is der Fehler?

Alles rund um die Programmierung mit Qt
Antworten
buhrmi
Beiträge: 18
Registriert: 21. Oktober 2006 14:43
Kontaktdaten:

Aller Anfang ist schwer, wo is der Fehler?

Beitrag von buhrmi »

Hallo alle,

wir haben dieses Semester Graphische Datenverarbeitung. Unsere Übungen und Praktikas sollen wir mit C++ und OpenGL machen, und das ganze sollte nach Möglichkeit Plattformunabhängig kompilierbar sein. Da haben wir uns gedacht, nehmen wir doch am besten QT OpenSource.

Doch momentan scheitern wir noch daran, ein OpenGL-Hello World zeichnen zu können. Momentan sieht unser Code so aus:

Code: Alles auswählen

#include <QApplication>
#include <QGLWidget>

class MyGLDrawer : public QGLWidget
{
    Q_OBJECT        // must include this if you use Qt signals/slots

public:
    MyGLDrawer(QWidget *parent = 0)
            : QGLWidget(parent)
    {
        ;
        }

protected:

    void initializeGL()
    {
        // Set up the rendering context, define display lists etc.:

        glClearColor(0.0, 0.0, 0.0, 0.0);
        glEnable(GL_DEPTH_TEST);

    }

    void resizeGL(int w, int h)
    {
        if (h == 0)
            h = 1;

        float ratio = 1.0* w / h;

        // Reset the coordinate system before modifying
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();

        // Set the viewport to be the entire window
        glViewport(0, 0, w, h);

        // Set the correct perspective.
        gluPerspective(45,ratio,1,1000);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
        gluLookAt(0.0,0.0,5.0,
                  0.0,0.0,-1.0,
                  0.0f,1.0f,0.0f);

    }

    void paintGL()
    {

        glClear(GL_COLOR_BUFFER_BIT);
        glBegin(GL_TRIANGLES);
        glVertex3f(-0.5,-0.5,0.0);
        glVertex3f(0.5,0.0,0.0);
        glVertex3f(0.0,0.5,0.0);
        glEnd();
        glFlush();
    }

};


int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MyGLDrawer* c = new MyGLDrawer();
    c->show();
    return app.exec();
}
und der Compiler (minGW) meldet sich mit

Code: Alles auswählen

-------------- Build: Debug in QTProject 1 ---------------
Compiling: main.cpp
Linking executable: bin\Debug\QTProject 1.exe
obj\Debug\main.o(.text$_ZN10MyGLDrawerC1EP7QWidget[MyGLDrawer::MyGLDrawer(QWidget*)]+0x41): In function `ZSt17__verify_groupingPKcjRKSs':
C:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/locale_facets.tcc:2502: undefined reference to `vtable for MyGLDrawer'
obj\Debug\main.o(.text$_ZN10MyGLDrawerC1EP7QWidget[MyGLDrawer::MyGLDrawer(QWidget*)]+0x4d):C:/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/locale_facets.tcc:2502: undefined reference to `vtable for MyGLDrawer'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 1 seconds)
0 errors, 0 warnings
...damit sind wir auch gleich ordentlich überfordet. Ich muss noch sagen dass niemand von uns jemals C++ programmiert hab, nur höhere Sprachen wie Java und C#.

Wo ist der Fehler warum das nicht funktioniert?

Dankesehr ^^
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Zum 51. Mal.... es fehlt moc. Habe ich gestern oder vorgestern schonmal beantwortet. Deshalb verweise ich auf die SUCHE nach vtable
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
dhcase
Beiträge: 132
Registriert: 10. Juni 2006 20:38

Beitrag von dhcase »

moc fehlt, die Suche hilft da weiter, es gab erst gestern ein Thema: http://qtforum.de/forum/viewtopic.php?t=3067

[Edit]
zu langsam ^^
Antworten