【发布时间】:2016-09-01 21:15:23
【问题描述】:
我正在编写一个新项目,并想用 glbinding 替换 GLEW。
我的设置是这样的: VS 2015,Qt 5.6,glbinding 2.0
我尝试编译非常简单的代码 - 只有窗口 (QWindow) 与 OpenGL 上下文 (QOpenGLContext) 但收到错误:glbinding 与 gl.h 不兼容
当我跟踪这个错误时,我发现该文件(由 glbinding/gl/gl.h 导入)nogl.h 导致了这个消息下面的代码:
#ifdef __gl_h_
#error "glbinding is not compatible with gl.h"
#else
#define __gl_h_
#endif
然后我注意到这是由 QtGui/qopenglcontext.h 标头引起的(我需要它来创建 OpenGL 上下文...)。所以当我不包括 qopenglcontext.h 我的程序编译没有错误。我还注意到,仅当我包含 glbinding/gl/gl.h after QtGui/qopenglcontext.h 时才会出现此错误消息。如果我颠倒包含顺序,我会收到一堆这样的错误:
1>C:\Qt\Qt5.6.0\5.6\msvc2015_64\include\QtGui/qopenglext.h(117): error C2065: 'GLenum': undeclared identifier
1>C:\Qt\Qt5.6.0\5.6\msvc2015_64\include\QtGui/qopenglext.h(117): error C2146: syntax error: missing ')' before identifier 'mode'
1>C:\Qt\Qt5.6.0\5.6\msvc2015_64\include\QtGui/qopenglext.h(118): error C2065: 'GLenum': undeclared identifier
1>C:\Qt\Qt5.6.0\5.6\msvc2015_64\include\QtGui/qopenglext.h(118): error C2146: syntax error: missing ')' before identifier 'target'
毕竟我仍然不知道如何解决这个问题以及究竟是什么导致了这个错误......
【问题讨论】:
-
您找到了导致它的原因:尝试将两个标题包含在同一个文件中。
#error是为了阻止你得到巨大的错误喷涌,因为你把它们包括在内。 -
感谢@NicolBolas 成功了!