最近在Window7使用Qt5.2学习OpenGL时,出现了以OpenGL中glu开头的函数库无法使用的错误,例如:
'gluPerspective' was not declared in this scope.本文使用的QT版本是Qt 5.2.0 for Windows 32-bit (MinGW 4.8, OpenGL, 689 MB) (Info),可从QT官网http://qt-project.org/downloads看到各种平台下的QT版本下载信息。
上网搜了以下相关的解决方法,都是针对QT低版本的,例如这篇文章:QT常见错误之GLU头文件没法使用。我尝试了一下,最终在Window7下的QT5.2环境下解决了这个问题。
1、在引用了类似于gluPerspective函数的glu函数库所在源文件中添加头文件:#include<gl/glu.h>
这一步必须,不知道为什么在QT5.2下使用OpenGL的以glu开头的GLu32库还需要包含gl/glu.h头文件,而使用OpenGL中以gl打头的OpenGL32库就不需要包含头文件了。
2、下载glut.lib和glut32.lib这两个库文件,将其拷贝到你的QT安装目录下的Qt5.2.05.2.0mingw48_32lib文件夹下,这样QT编译器会自动到该lib目录下搜相应的库文件,即glu函数库的实现。
这一步可能不需要。
最后,在我的Qt5.2环境下尝试了一下下Qt下的OpenGL 编程(2)动手搭建Qt下的OpenGL编程框架这篇博文以及C GUI Programming with Qt4(第2版)第20章三角锥Tetrahedron中的OpenGL例子,确认进行上述配置后,gluPerspective(45.0,(GLfloat)width/(GLfloat)height,0.1,100.0);以及gluPickMatrix(GLdouble(pos.x()),GLdouble(viewport[3]-pos.y()),5.0,5.0,viewport);这两行代码好使了。