Seite 1 von 1

Qt4/OpenGL Problem

Verfasst: 3. April 2006 01:29
von tsluga
Hallo,

ich wollte mal meine OpenGL Sachen mit QT kombinieren, was jedoch nicht will. Ich habe es mal mit den Beispielen aus der Doku versucht, was aber auch nicht geht, ich bekomme nur solche Meldungen :

nach einem make kommt :
g++ -o roboter borderlayout.o main.o mainframe.o roboter.o moc_roboter.o -L/usr/lib -lQtGui_debug -lQtCore_debug -lpthread
/usr/bin/ld: warning: libstdc++.so.6, needed by /usr/lib/libQtGui_debug.so, may conflict with libstdc++.so.5
main.o(.gnu.linkonce.t._ZN7RoboterD1Ev+0x22): In function `Roboter::~Roboter [in-charge]()':
/home/tsluga/workspace/graphik_II/roboter/main.cpp:6: undefined reference to `QGLWidget::~QGLWidget [not-in-charge]()'
roboter.o(.text+0x37): In function `Roboter::Roboter[not-in-charge](QWidget*)':
/usr/include/qt4/QtCore/qglobal.h:744: undefined reference to `QGLWidget::QGLWidget[not-in-charge](QWidget*, QGLWidget const*, QFlags<Qt::WindowType>)'
roboter.o(.text+0x75): In function `Roboter::Roboter[not-in-charge](QWidget*)':
/home/tsluga/workspace/graphik_II/roboter/roboter.cpp:7: undefined reference to `QGLWidget::~QGLWidget [not-in-charge]()'
roboter.o(.text+0xc5): In function `Roboter::Roboter[in-charge](QWidget*)':
/home/tsluga/workspace/graphik_II/roboter/roboter.cpp:5: undefined reference to `QGLWidget::QGLWidget[not-in-charge](QWidget*, QGLWidget const*, QFlags<Qt::WindowType>)'
roboter.o(.text+0x103):/home/tsluga/workspace/graphik_II/roboter/roboter.cpp:7: undefined reference to `QGLWidget::~QGLWidget [not-in-charge]()'
roboter.o(.text+0x130): In function `Roboter::paintGL()':
/home/tsluga/workspace/graphik_II/roboter/roboter.cpp:16: undefined reference to `glClear'
roboter.o(.text+0x135):/home/tsluga/workspace/graphik_II/roboter/roboter.cpp:18: undefined reference to `glFlush'
roboter.o(.text+0x19d): In function `Roboter::resizeGL(int, int)':
/home/tsluga/workspace/graphik_II/roboter/roboter.cpp:24: undefined reference to `glViewport'
roboter.o(.text+0x1a9):/home/tsluga/workspace/graphik_II/roboter/roboter.cpp:25: undefined reference to `glMatrixMode'
roboter.o(.text+0x1ae):/home/tsluga/workspace/graphik_II/roboter/roboter.cpp:26: undefined reference to `glLoadIdentity'
roboter.o(.text+0x1e6):/home/tsluga/workspace/graphik_II/roboter/roboter.cpp:27: undefined reference to `glFrustum'
roboter.o(.text+0x1f2):/home/tsluga/workspace/graphik_II/roboter/roboter.cpp:28: undefined reference to `glMatrixMode'
roboter.o(.text+0x1f7):/home/tsluga/workspace/graphik_II/roboter/roboter.cpp:29: undefined reference to `glLoadIdentity'
roboter.o(.text+0x211):/home/tsluga/workspace/graphik_II/roboter/roboter.cpp:30: undefined reference to `glTranslated'
moc_roboter.o(.text+0x4c): In function `Roboter::qt_metacast(char const*)':
/usr/include/qt4/QtCore/qlist.h:492: undefined reference to `QGLWidget::qt_metacast(char const*)'
moc_roboter.o(.text+0x7a): In function `Roboter::qt_metacall(QMetaObject::Call, int, void**)':
/home/tsluga/workspace/graphik_II/roboter/moc_roboter.cpp:56: undefined reference to `QGLWidget::qt_metacall(QMetaObject::Call, int, void**)'
moc_roboter.o(.rodata+0x0): undefined reference to `QGLWidget::staticMetaObject'
moc_roboter.o(.gnu.linkonce.r._ZTV7Roboter+0x1c):/home/tsluga/workspace/graphik_II/roboter/moc_roboter.cpp:48: undefined reference to `QGLWidget::event(QEvent*)'
moc_roboter.o(.gnu.linkonce.r._ZTV7Roboter+0x4c):/usr/include/qt4/QtCore/qlist.h:492: undefined reference to `QGLWidget::paintEngine() const'
moc_roboter.o(.gnu.linkonce.r._ZTV7Roboter+0x7c):/home/tsluga/workspace/graphik_II/roboter/moc_roboter.cpp:56: undefined reference to `QGLWidget::paintEvent(QPaintEvent*)'
moc_roboter.o(.gnu.linkonce.r._ZTV7Roboter+0x84):/home/tsluga/workspace/graphik_II/roboter/moc_roboter.cpp:57: undefined reference to `QGLWidget::resizeEvent(QResizeEvent*)'
moc_roboter.o(.gnu.linkonce.r._ZTV7Roboter+0xe0): undefined reference to `QGLWidget::updateGL()'
moc_roboter.o(.gnu.linkonce.r._ZTV7Roboter+0xe4): undefined reference to `QGLWidget::updateOverlayGL()'
moc_roboter.o(.gnu.linkonce.r._ZTV7Roboter+0xf4): undefined reference to `QGLWidget::initializeOverlayGL()'
moc_roboter.o(.gnu.linkonce.r._ZTV7Roboter+0xf8): undefined reference to `QGLWidget::resizeOverlayGL(int, int)'
moc_roboter.o(.gnu.linkonce.r._ZTV7Roboter+0xfc): undefined reference to `QGLWidget::paintOverlayGL()'
moc_roboter.o(.gnu.linkonce.r._ZTV7Roboter+0x100): undefined reference to `QGLWidget::glInit()'
moc_roboter.o(.gnu.linkonce.r._ZTV7Roboter+0x104): undefined reference to `QGLWidget::glDraw()'
moc_roboter.o(.gnu.linkonce.r._ZTV7Roboter+0x11c): undefined reference to `non-virtual thunk [nv:-8] to QGLWidget::paintEngine() const'
moc_roboter.o(.gnu.linkonce.t._ZN7RoboterD0Ev+0x22): In function `Roboter::~Roboter [in-charge deleting]()':
/home/tsluga/workspace/graphik_II/roboter/moc_roboter.cpp:49: undefined reference to `QGLWidget::~QGLWidget [not-in-charge]()'
moc_roboter.o(.gnu.linkonce.r._ZTI7Roboter+0x8):/home/tsluga/workspace/graphik_II/roboter/moc_roboter.cpp:44: undefined reference to `typeinfo for QGLWidget'
collect2: ld returned 1 exit status
make: *** [roboter] Fehler 1
Weiß einer weiter ?

Ohne OpenGL Sachen, also ein einfaches Fenster & Co. geht problemlos.

Verfasst: 3. April 2006 06:33
von Christian81
Eventuell fehlt Dir 'CONFIG += opengl' ?

Verfasst: 4. April 2006 00:08
von tsluga
Gefehlt hat ein -lQtOpenGL in der Makefile.

Jetzt habe ich folgendes Problem ( Debian sarge )

Wenn ich eine Awendung mit QtOpenGL starte, friert mir die Kiste ein.
Ich habe mal die Mesa Sachen installiert, dann läuft es wieder, bei der Installation von Mesa wird mir wieder QT deinstalliert :roll: . Weiß einer wie ich aus diesem Dilema rauskomme ?

Verfasst: 4. April 2006 06:30
von Christian81
tsluga hat geschrieben:Gefehlt hat ein -lQtOpenGL in der Makefile.
Das ist ja genau dass, was CONFIG +=opengl einfügt :roll:

Verfasst: 4. April 2006 09:03
von BartSimpson
Qt per Hand übersetzen:)
Aber Mensa würde ich nicht einsetzten.
Das dein Rechner einfriert, dürfte auf ein Problem mit dem GK Treiber hinweisen. Hast du mal mal versucht, wenn du glxgears startest? (Das ist ein nettes Teil zum testen von OpenGL)