我正在写一个新项目,想用glbinding替换GLEW。
我的设置是这样的:VS 2015,Qt 5.6,glbinding 2.0
我试图编译相当简单的代码-只有窗口(QWindow
)与OpenGL上下文(QOpenGLContext
),但得到一个错误:*glbinding与gl.h不兼容 *
当我跟踪这个bug时,我发现文件(由 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 时,我的程序编译时没有错误。我还注意到,只有当我在 QtGui/qopenglcontext.h 之后包含 glbinding/gl/gl.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'
毕竟,我仍然不知道如何解决这个问题,究竟是什么导致这个错误.
1条答案
按热度按时间5cg8jx4n1#
gl.h
以引起麻烦的方式被包括在内。所以你要做的是:在你的C++编译单元文件中包括 glbinding 头文件,在所有其他文件之前(Qt头文件,OpenGL辅助库等等)。