3

我在 Qt4.8 上有项目,并试图用 Qt5.1 构建它。我收到很多

#error gl.h included before glew.h 

#error glext.h included before glew.h

错误。似乎 Qt5 与 OpenGL 发生了很大变化。所有包括

#include "GL/glew.h"
#include "GL/gl.h"
#include "GL/glu.h"

glew.h 总是第一个。

4

2 回答 2

1

假设您只在使用需要使用 GLEW 加载的函数的类中使用 OPENGL 调用,那么这将起作用。

我解决这个问题的方法是将所有 GLEW h 包含在 .CPP 文件中,但在包含头文件之前(其中 QTGUI 又包含 OPENGL)。

所以这就是我在 GLWIDGET.CPP 中的方式:

#include <GL/glew.h>
#include <GL/gl.h>
#include <GL/glu.h>

#include <GLWidget.h>

如您所见,我的 GLWidget 是来自 QGLWidget 的派生类,它需要包含 QTGUI 和所有这些。

于 2014-04-16T20:24:03.487 回答
-1

标头是否首先包含在某些 .h 文件中并不重要。头文件不是独立的。重要的是从源文件中看到包含的顺序。

您似乎有太多的标题包含(一般来说,您应该将标题到标题的包含保持在绝对最低限度)。我们无法解决这个问题。你只需要解开你的标题问题。

于 2013-03-18T16:56:47.113 回答