【问题标题】:OpenGL wih Qt5: #error gl.h included before glew.h带有 Qt5 的 OpenGL:#error gl.h 包含在 glew.h 之前
【发布时间】:2013-03-06 22:33:35
【问题描述】:

我有 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 总是第一个。

【问题讨论】:

  • 您是否首先添加了包含gl.h 在内的其他内容?也许像 Qt 头文件? GLEW 应放在其中任何一个之前。
  • @NicolBolas 不,#include "GL/glew.h" 总是第一个
  • 可能是预编译的头文件?
  • @dowhilefor 未使用
  • 同时检查您的 cpps,阅读 this 答案上的 cmets,也许会有所帮助。

标签: c++ qt opengl qt5 glew


【解决方案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 和所有这些。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 这个太差了,不能选为最佳答案
    猜你喜欢
    • 2012-01-24
    • 2014-03-13
    • 1970-01-01
    • 2014-07-03
    • 2012-08-20
    • 2011-08-11
    • 1970-01-01
    • 2022-01-20
    • 2011-04-15
    相关资源
    最近更新 更多