Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Qt4/OpenGL Problem



tsluga
03-04-2006, 00:33
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.

Detrius
03-04-2006, 02:25
Das schaut nach einer Reiher hübscher Fehler vom Linker aus. Hast Du ein paar Bibliotheken vergessen mit anzugeben?


/usr/bin/ld: warning: libstdc++.so.6, needed by /usr/lib/libQtGui_debug.so, may conflict with libstdc++.so.5
Das würde mir auch zu denken geben. Das schaut so aus, als wenn libQtGui_debug mit einer anderen Version von g++ gebaut wäre, als Du jetzt benutzt.

tsluga
03-04-2006, 23:11
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 . Weiß einer wie ich aus diesem Dilema rauskomme ?