• 12044阅读
  • 2回复

Qt中的OpenGL问题 [复制链接]

上一主题 下一主题
离线jorneyr
 

只看楼主 倒序阅读 楼主  发表于: 2008-03-24
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
现在在学使用Qt写OpenGL程序, 但是不知道在Qt中写OpenGL的环境要怎么设置(现在的环境设置已经能写一般的Qt界面程序), 但是一写Qt的OpenGL程序, 写的时候, Eclipse中都没有报有任何语法错误(我的设置可以实时指出任何语法上的错误, 如函数名写错了, 使用了没有定义的类型等), 但是编译的时候却不成功, 然后去Qt安装目录下编译Qt自带的OpenGL的例子, 也是编译不通过, 错误如下, 希望各位指点一下:

**** Build of configuration MinGW GCC for project QGLDemo ****

****  WARNING: The "MinGW GCC" Configuration may not build  ****
****  because it uses the "cdt.managedbuild.toolchain.gnu.mingw.base"  ****
****  tool-chain that is unsupported on this system.  ****

****  Attempting to build...  ****

make -f Makefile.Release all
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"c:\Programme\Qt\4.3.4\include\QtCore" -I"c:\Programme\Qt\4.3.4\include\QtCore" -I"c:\Programme\Qt\4.3.4\include\QtGui" -I"c:\Programme\Qt\4.3.4\include\QtGui" -I"c:\Programme\Qt\4.3.4\include" -I"." -I"c:\Programme\Qt\4.3.4\include\ActiveQt" -I"release" -I"." -I"c:\Programme\Qt\4.3.4\mkspecs\default" -o release\main.o main.cpp
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"c:\Programme\Qt\4.3.4\include\QtCore" -I"c:\Programme\Qt\4.3.4\include\QtCore" -I"c:\Programme\Qt\4.3.4\include\QtGui" -I"c:\Programme\Qt\4.3.4\include\QtGui" -I"c:\Programme\Qt\4.3.4\include" -I"." -I"c:\Programme\Qt\4.3.4\include\ActiveQt" -I"release" -I"." -I"c:\Programme\Qt\4.3.4\mkspecs\default" -o release\Tetrahedron.o Tetrahedron.cpp
C:\Programme\Qt\4.3.4\bin\moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"c:\Programme\Qt\4.3.4\include\QtCore" -I"c:\Programme\Qt\4.3.4\include\QtCore" -I"c:\Programme\Qt\4.3.4\include\QtGui" -I"c:\Programme\Qt\4.3.4\include\QtGui" -I"c:\Programme\Qt\4.3.4\include" -I"." -I"c:\Programme\Qt\4.3.4\include\ActiveQt" -I"release" -I"." -I"c:\Programme\Qt\4.3.4\mkspecs\default" -D__GNUC__ -DWIN32 Tetrahedron.h -o release\moc_Tetrahedron.cpp
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"c:\Programme\Qt\4.3.4\include\QtCore" -I"c:\Programme\Qt\4.3.4\include\QtCore" -I"c:\Programme\Qt\4.3.4\include\QtGui" -I"c:\Programme\Qt\4.3.4\include\QtGui" -I"c:\Programme\Qt\4.3.4\include" -I"." -I"c:\Programme\Qt\4.3.4\include\ActiveQt" -I"release" -I"." -I"c:\Programme\Qt\4.3.4\mkspecs\default" -o release\moc_Tetrahedron.o release\moc_Tetrahedron.cpp
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -mthreads -Wl -Wl,-subsystem,windows -o release\QGLDemo.exe release/main.o release/Tetrahedron.o release/moc_Tetrahedron.o  -L"c:\Programme\Qt\4.3.4\lib" -lmingw32 -lqtmain -lQtGui4 -lQtCore4
release/main.o(.text+0x64):main.cpp: undefined reference to `_imp___ZN9QGLFormat9hasOpenGLEv'
release/Tetrahedron.o(.text+0x1b):Tetrahedron.cpp: undefined reference to `_imp___ZN9QGLWidgetD2Ev'
release/Tetrahedron.o(.text+0x4b):Tetrahedron.cpp: undefined reference to `_imp___ZN9QGLWidgetD2Ev'
release/Tetrahedron.o(.text+0x7c):Tetrahedron.cpp: undefined reference to `_imp___ZN9QGLWidgetD2Ev'
release/Tetrahedron.o(.text+0xb8):Tetrahedron.cpp: undefined reference to `_imp___ZNK9QGLWidget13qglClearColorERK6QColor'
release/Tetrahedron.o(.text+0xc4):Tetrahedron.cpp: undefined reference to `glShadeModel@4'
release/Tetrahedron.o(.text+0xd3):Tetrahedron.cpp: undefined reference to `glEnable@4'
release/Tetrahedron.o(.text+0xe2):Tetrahedron.cpp: undefined reference to `glEnable@4'
release/Tetrahedron.o(.text+0x114):Tetrahedron.cpp: undefined reference to `glViewport@16'
release/Tetrahedron.o(.text+0x123):Tetrahedron.cpp: undefined reference to `glMatrixMode@4'
release/Tetrahedron.o(.text+0x12b):Tetrahedron.cpp: undefined reference to `glLoadIdentity@0'
release/Tetrahedron.o(.text+0x17f):Tetrahedron.cpp: undefined reference to `glFrustum@48'
release/Tetrahedron.o(.text+0x18e):Tetrahedron.cpp: undefined reference to `glMatrixMode@4'
release/Tetrahedron.o(.text+0x1ae):Tetrahedron.cpp: undefined reference to `glClear@4'
release/Tetrahedron.o(.text+0x266):Tetrahedron.cpp: undefined reference to `_imp___ZN9QGLWidgetC2EP7QWidgetPKS_6QFlagsIN2Qt10WindowTypeEE'
release/Tetrahedron.o(.text+0x29d):Tetrahedron.cpp: undefined reference to `_imp___ZN9QGLFormatC1E6QFlagsIN3QGL12FormatOptionEEi'
release/Tetrahedron.o(.text+0x2c9):Tetrahedron.cpp: undefined reference to `_imp___ZN9QGLWidget9setFormatERK9QGLFormat'
release/Tetrahedron.o(.text+0x2db):Tetrahedron.cpp: undefined reference to `_imp___ZN9QGLFormatD1Ev'
release/Tetrahedron.o(.text+0x321):Tetrahedron.cpp: undefined reference to `_imp___ZN9QGLFormatD1Ev'
release/Tetrahedron.o(.text+0x33f):Tetrahedron.cpp: undefined reference to `_imp___ZN9QGLWidgetD2Ev'
release/Tetrahedron.o(.text+0x3d8):Tetrahedron.cpp: undefined reference to `_imp___ZN9QGLWidgetC2EP7QWidgetPKS_6QFlagsIN2Qt10WindowTypeEE'
release/Tetrahedron.o(.text+0x40d):Tetrahedron.cpp: undefined reference to `_imp___ZN9QGLFormatC1E6QFlagsIN3QGL12FormatOptionEEi'
release/Tetrahedron.o(.text+0x439):Tetrahedron.cpp: undefined reference to `_imp___ZN9QGLWidget9setFormatERK9QGLFormat'
release/Tetrahedron.o(.text+0x44b):Tetrahedron.cpp: undefined reference to `_imp___ZN9QGLFormatD1Ev'
release/Tetrahedron.o(.text+0x491):Tetrahedron.cpp: undefined reference to `_imp___ZN9QGLFormatD1Ev'
release/Tetrahedron.o(.text+0x4b4):Tetrahedron.cpp: undefined reference to `_imp___ZN9QGLWidgetD2Ev'
release/moc_Tetrahedron.o(.text+0x82):moc_Tetrahedron.cpp: undefined reference to `QGLWidget::qt_metacall(QMetaObject::Call, int, void**)'
release/moc_Tetrahedron.o(.text+0x92):moc_Tetrahedron.cpp: undefined reference to `_imp___ZN9QGLWidget16staticMetaObjectE'
release/moc_Tetrahedron.o(.text+0x5a):moc_Tetrahedron.cpp: undefined reference to `QGLWidget::qt_metacast(char const*)'
release/moc_Tetrahedron.o(.rdata$_ZTV11Tetrahedron[vtable for Tetrahedron]+0x1c):moc_Tetrahedron.cpp: undefined reference to `QGLWidget::event(QEvent*)'
release/moc_Tetrahedron.o(.rdata$_ZTV11Tetrahedron[vtable for Tetrahedron]+0x54):moc_Tetrahedron.cpp: undefined reference to `QGLWidget::paintEngine() const'
release/moc_Tetrahedron.o(.rdata$_ZTV11Tetrahedron[vtable for Tetrahedron]+0x84):moc_Tetrahedron.cpp: undefined reference to `QGLWidget::paintEvent(QPaintEvent*)'
release/moc_Tetrahedron.o(.rdata$_ZTV11Tetrahedron[vtable for Tetrahedron]+0x8c):moc_Tetrahedron.cpp: undefined reference to `QGLWidget::resizeEvent(QResizeEvent*)'
release/moc_Tetrahedron.o(.rdata$_ZTV11Tetrahedron[vtable for Tetrahedron]+0xe8):moc_Tetrahedron.cpp: undefined reference to `QGLWidget::updateGL()'
release/moc_Tetrahedron.o(.rdata$_ZTV11Tetrahedron[vtable for Tetrahedron]+0xec):moc_Tetrahedron.cpp: undefined reference to `QGLWidget::updateOverlayGL()'
release/moc_Tetrahedron.o(.rdata$_ZTV11Tetrahedron[vtable for Tetrahedron]+0xfc):moc_Tetrahedron.cpp: undefined reference to `QGLWidget::initializeOverlayGL()'
release/moc_Tetrahedron.o(.rdata$_ZTV11Tetrahedron[vtable for Tetrahedron]+0x100):moc_Tetrahedron.cpp: undefined reference to `QGLWidget::resizeOverlayGL(int, int)'
release/moc_Tetrahedron.o(.rdata$_ZTV11Tetrahedron[vtable for Tetrahedron]+0x104):moc_Tetrahedron.cpp: undefined reference to `QGLWidget::paintOverlayGL()'
release/moc_Tetrahedron.o(.rdata$_ZTV11Tetrahedron[vtable for Tetrahedron]+0x108):moc_Tetrahedron.cpp: undefined reference to `QGLWidget::glInit()'
release/moc_Tetrahedron.o(.rdata$_ZTV11Tetrahedron[vtable for Tetrahedron]+0x10c):moc_Tetrahedron.cpp: undefined reference to `QGLWidget::glDraw()'
release/moc_Tetrahedron.o(.rdata$_ZTV11Tetrahedron[vtable for Tetrahedron]+0x124):moc_Tetrahedron.cpp: undefined reference to `non-virtual thunk to QGLWidget::paintEngine() const'
collect2: ld returned 1 exit status
make: *** [release\QGLDemo.exe] Error 1
离线jorneyr

只看该作者 1楼 发表于: 2008-03-24
呵呵, 看书的时候最后两行没看, 郁闷, 找到了:
To link the application against the QtOpenGL module and the system's OpenGL library, the .pro file needs this entry:

QT            += opengl
离线rianter
只看该作者 2楼 发表于: 2008-03-26
楼上正解
快速回复
限100 字节
 
上一个 下一个