Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 获取有关重新定义的错误(OpenGL 4.0着色语言手册)_C++_Visual Studio 2010_Qt_Opengl_Glsl - Fatal编程技术网

C++ 获取有关重新定义的错误(OpenGL 4.0着色语言手册)

C++ 获取有关重新定义的错误(OpenGL 4.0着色语言手册),c++,visual-studio-2010,qt,opengl,glsl,C++,Visual Studio 2010,Qt,Opengl,Glsl,我刚刚测试了第1章()中的代码 我已经安装了Qt5,qmake-tpvc chapter01.pro,然后在vs2010中打开它 生成并得到许多错误,如: 1>D:\APP\Qt5\5.0.0\msvc2010\include\GLES2/gl2.h(38): error C2371: 'GLintptr' : redefinition; different basic types 1> D:\OpenGL\glew-1.5.4\include\GL/glew.h(

我刚刚测试了第1章()中的代码

我已经安装了Qt5,qmake-tpvc chapter01.pro,然后在vs2010中打开它

生成并得到许多错误,如:

1>D:\APP\Qt5\5.0.0\msvc2010\include\GLES2/gl2.h(38): error C2371: 'GLintptr' : redefinition; different basic types
1>          D:\OpenGL\glew-1.5.4\include\GL/glew.h(1615) : see declaration of 'GLintptr'
1>D:\APP\Qt5\5.0.0\msvc2010\include\GLES2/gl2.h(39): error C2371: 'GLsizeiptr' : redefinition; different basic types
1>          D:\OpenGL\glew-1.5.4\include\GL/glew.h(1614) : see declaration of 'GLsizeiptr'
1>D:\APP\Qt5\5.0.0\msvc2010\include\GLES2/gl2.h(96): warning C4005: 'GL_BLEND_EQUATION_RGB' : macro redefinition
1>          D:\OpenGL\glew-1.5.4\include\GL/glew.h(1666) : see previous definition of 'GL_BLEND_EQUATION_RGB'
1>D:\APP\Qt5\5.0.0\msvc2010\include\GLES2/gl2.h(474): error C2365: '__glewActiveTexture' : redefinition; previous definition was 'data variable'
1>          D:\OpenGL\glew-1.5.4\include\GL/glew.h(12027) : see declaration of '__glewActiveTexture'
1>D:\APP\Qt5\5.0.0\msvc2010\include\GLES2/gl2.h(475): error C2365: '__glewAttachShader' : redefinition; previous definition was 'data variable'

如何解决这些问题?(代码链接是)

简短回答:只包括GLEW的头文件,不包括任何OpenGL头文件


说明:GLEW的头文件有效地包含了OpenGL头文件中的所有内容(我从未尝试过使用GLES,但我怀疑是相同的),通过C预处理器宏重新定义了所有OpenGL入口点。这就是为什么你会看到多重定义的符号和类型。可以找到其他信息。

简短回答:只包括GLEW的头文件,不包括任何OpenGL头文件


说明:GLEW的头文件有效地包含了OpenGL头文件中的所有内容(我从未尝试过使用GLES,但我怀疑是相同的),通过C预处理器宏重新定义了所有OpenGL入口点。这就是为什么你会看到多重定义的符号和类型。可以找到更多的信息。

肯定不是最好的答案,但我刚刚查阅了这本书

当你看到Qt的版本时,这本书似乎已经过时了:

例如,在Qt的最新版本中(至少版本4.7)

这样,为了便于阅读这本书,你可以考虑把你的QT降级到4。x(4.8,例如)族,因为OpenGL的要求可能有很大的变化,特别是如果你使用的QT构建是用不同的OpenGL库构建的。

另一种解决方案是使用完全不需要Qt的:

这是David Wolff编写的OpenGL 4.0着色语言烹饪书中的示例程序。源代码已经更新,可以与MS Visual Studio一起使用,不再需要Qt


这肯定不是最好的答案,但我刚查过这本书

当你看到Qt的版本时,这本书似乎已经过时了:

例如,在Qt的最新版本中(至少版本4.7)

这样,为了便于阅读这本书,你可以考虑把你的QT降级到4。x(4.8,例如)族,因为OpenGL的要求可能有很大的变化,特别是如果你使用的QT构建是用不同的OpenGL库构建的。

另一种解决方案是使用完全不需要Qt的:

这是David Wolff编写的OpenGL 4.0着色语言烹饪书中的示例程序。源代码已经更新,可以与MS Visual Studio一起使用,不再需要Qt


谢谢你的帮助。然而,我并没有明确地将gl2.h包含在这个项目中。第二,我注释掉了所有OpenGL标题,这些错误仍然存在。为什么?从你的帖子上看,Qt似乎包含了gl2.h。如果您还没有尝试过这一点:尝试在任何其他头之前包含glew.h。基于此,这似乎会有所帮助。此代码来自于书中,我没有做任何更改。是的,glew.h早于其他标题。谢谢你的帮助。然而,我并没有明确地将gl2.h包含在这个项目中。第二,我注释掉了所有OpenGL标题,这些错误仍然存在。为什么?从你的帖子上看,Qt似乎包含了gl2.h。如果您还没有尝试过这一点:尝试在任何其他头之前包含glew.h。基于此,这似乎会有所帮助。此代码来自于书中,我没有做任何更改。是的,glew.h早于其他标题。谢谢