Seite 1 von 1

Aller Anfang ist schwer, wo is der Fehler?

Verfasst: 24. Oktober 2006 12:33
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 ^^

Verfasst: 24. Oktober 2006 13:09
von Christian81
Zum 51. Mal.... es fehlt moc. Habe ich gestern oder vorgestern schonmal beantwortet. Deshalb verweise ich auf die SUCHE nach vtable

Verfasst: 24. Oktober 2006 13:12
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 ^^