繁体   English   中英

glbinding,Qt和错误“ glbinding与gl.h不兼容”

[英]glbinding, Qt and error “glbinding is not compatible with gl.h”

我正在编写一个新项目,并想用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时,我的程序将正确编译。 我还注意到只有 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'

毕竟我仍然不知道如何解决这个问题以及到底是什么导致了这个错误...

像几乎所有其他OpenGL加载器一样, glbinding不得不摆弄OpenGL符号令牌,以避免名称空间冲突。 为此,它必须以特定的方式与OpenGL定义进行交互,这意味着您必须不包括任何OpenGL标头,或者在包含glbinding标头时又包括此类标头。 预处理器摆弄glbinding会阻止gl.h引入而造成麻烦。

因此,您必须做的是:在所有其他内容(Qt头,OpenGL帮助器库等)之前,在C ++编译单元文件中包含glbinding头。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM