OpenGL SuperBible 头文件问题

Posted

技术标签:

【中文标题】OpenGL SuperBible 头文件问题【英文标题】:OpenGL SuperBible header problem 【发布时间】:2011-07-19 20:01:44 【问题描述】:

最近我得到了 OpenGL SuperBible 第 5 版。很高兴我开始阅读,当我读到关于如何正确设置所有内容的第一部分时,我遇到了一些 Google 和其他 *** 问题都无法回答的问题。

我想明确说明我使用的是 Visual Studio 2010 并且所有内容都已正确链接。

我已经从官方 OpenGL Superbible 网站下载了库和头文件。

所以当我编写第一个名为 Triangle.cpp 的程序并尝试编译它时,它给出了以下错误。

1>------ Build started: Project: OpenGL, Configuration: Debug Win32 ------
1>Build started 7/19/2011 9:21:27 PM.
1>InitializeBuildStatus:
1>  Touching "Debug\OpenGL.unsuccessfulbuild".
1>ClCompile:
1>  Triangle.cpp
1>c:\sb5\src\gltools\include\glbatch.h(77): error C2061: syntax error : identifier 'GLenum'
1>c:\sb5\src\gltools\include\glbatch.h(86): error C2061: syntax error : identifier 'GLuint'
1>c:\sb5\src\gltools\include\glbatch.h(89): error C2061: syntax error : identifier 'GLfloat'
1>c:\sb5\src\gltools\include\glbatch.h(90): error C2061: syntax error : identifier 'GLfloat'
1>c:\sb5\src\gltools\include\glbatch.h(91): error C2061: syntax error : identifier 'GLfloat'
1>c:\sb5\src\gltools\include\glbatch.h(92): error C2061: syntax error : identifier 'GLfloat'
1>c:\sb5\src\gltools\include\glbatch.h(100): error C2061: syntax error : identifier 'GLfloat'
1>c:\sb5\src\gltools\include\glbatch.h(103): error C2061: syntax error : identifier 'GLfloat'
1>c:\sb5\src\gltools\include\glbatch.h(106): error C2061: syntax error : identifier 'GLfloat'
1>c:\sb5\src\gltools\include\glbatch.h(109): error C2061: syntax error : identifier 'GLuint'
1>c:\sb5\src\gltools\include\glbatch.h(110): error C2061: syntax error : identifier 'GLuint'
1>c:\sb5\src\gltools\include\glbatch.h(113): error C2146: syntax error : missing ';' before identifier 'primitiveType'
1>c:\sb5\src\gltools\include\glbatch.h(113): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glbatch.h(113): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glbatch.h(115): error C2146: syntax error : missing ';' before identifier 'uiVertexArray'
1>c:\sb5\src\gltools\include\glbatch.h(115): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glbatch.h(115): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glbatch.h(116): error C2146: syntax error : missing ';' before identifier 'uiNormalArray'
1>c:\sb5\src\gltools\include\glbatch.h(116): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glbatch.h(116): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glbatch.h(117): error C2146: syntax error : missing ';' before identifier 'uiColorArray'
1>c:\sb5\src\gltools\include\glbatch.h(117): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glbatch.h(117): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glbatch.h(118): error C2143: syntax error : missing ';' before '*'
1>c:\sb5\src\gltools\include\glbatch.h(118): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glbatch.h(118): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glbatch.h(119): error C2146: syntax error : missing ';' before identifier 'vertexArrayObject'
1>c:\sb5\src\gltools\include\glbatch.h(119): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glbatch.h(119): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glbatch.h(121): error C2146: syntax error : missing ';' before identifier 'nVertsBuilding'
1>c:\sb5\src\gltools\include\glbatch.h(121): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glbatch.h(121): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glbatch.h(122): error C2146: syntax error : missing ';' before identifier 'nNumVerts'
1>c:\sb5\src\gltools\include\glbatch.h(122): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glbatch.h(122): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glbatch.h(123): error C2146: syntax error : missing ';' before identifier 'nNumTextureUnits'
1>c:\sb5\src\gltools\include\glbatch.h(123): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glbatch.h(123): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glbatch.h(89): error C2065: 'vVerts' : undeclared identifier
1>c:\sb5\src\gltools\include\glbatch.h(90): error C2065: 'vNorms' : undeclared identifier
1>c:\sb5\src\gltools\include\glbatch.h(91): error C2065: 'vColors' : undeclared identifier
1>c:\sb5\src\gltools\include\glbatch.h(92): error C2065: 'vTex' : undeclared identifier
1>c:\sb5\src\gltools\include\glbatch.h(92): error C2065: 'uiTextureLayer' : undeclared identifier
1>c:\sb5\src\gltools\include\glshadermanager.h(85): error C2146: syntax error : missing ';' before identifier 'uiShaderID'
1>c:\sb5\src\gltools\include\glshadermanager.h(85): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glshadermanager.h(85): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glshadermanager.h(99): error C2146: syntax error : missing ';' before identifier 'GetStockShader'
1>c:\sb5\src\gltools\include\glshadermanager.h(99): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glshadermanager.h(99): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glshadermanager.h(99): warning C4183: 'GetStockShader': missing return type; assumed to be a member function returning 'int'
1>c:\sb5\src\gltools\include\glshadermanager.h(102): error C2146: syntax error : missing ';' before identifier 'UseStockShader'
1>c:\sb5\src\gltools\include\glshadermanager.h(102): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glshadermanager.h(102): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glshadermanager.h(102): warning C4183: 'UseStockShader': missing return type; assumed to be a member function returning 'int'
1>c:\sb5\src\gltools\include\glshadermanager.h(107): error C2146: syntax error : missing ';' before identifier 'LoadShaderPair'
1>c:\sb5\src\gltools\include\glshadermanager.h(107): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glshadermanager.h(107): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glshadermanager.h(107): warning C4183: 'LoadShaderPair': missing return type; assumed to be a member function returning 'int'
1>c:\sb5\src\gltools\include\glshadermanager.h(110): error C2146: syntax error : missing ';' before identifier 'LoadShaderPairSrc'
1>c:\sb5\src\gltools\include\glshadermanager.h(110): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glshadermanager.h(110): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glshadermanager.h(110): warning C4183: 'LoadShaderPairSrc': missing return type; assumed to be a member function returning 'int'
1>c:\sb5\src\gltools\include\glshadermanager.h(113): error C2146: syntax error : missing ';' before identifier 'LoadShaderPairWithAttributes'
1>c:\sb5\src\gltools\include\glshadermanager.h(113): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glshadermanager.h(113): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glshadermanager.h(113): warning C4183: 'LoadShaderPairWithAttributes': missing return type; assumed to be a member function returning 'int'
1>c:\sb5\src\gltools\include\glshadermanager.h(114): error C2146: syntax error : missing ';' before identifier 'LoadShaderPairSrcWithAttributes'
1>c:\sb5\src\gltools\include\glshadermanager.h(114): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glshadermanager.h(114): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glshadermanager.h(114): warning C4183: 'LoadShaderPairSrcWithAttributes': missing return type; assumed to be a member function returning 'int'
1>c:\sb5\src\gltools\include\glshadermanager.h(117): error C2146: syntax error : missing ';' before identifier 'LookupShader'
1>c:\sb5\src\gltools\include\glshadermanager.h(117): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glshadermanager.h(117): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glshadermanager.h(117): warning C4183: 'LookupShader': missing return type; assumed to be a member function returning 'int'
1>c:\sb5\src\gltools\include\glshadermanager.h(120): error C2146: syntax error : missing ';' before identifier 'uiStockShaders'
1>c:\sb5\src\gltools\include\glshadermanager.h(120): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\glshadermanager.h(120): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltrianglebatch.h(96): error C2061: syntax error : identifier 'GLuint'
1>c:\sb5\src\gltools\include\gltrianglebatch.h(101): error C2146: syntax error : missing ';' before identifier 'GetIndexCount'
1>c:\sb5\src\gltools\include\gltrianglebatch.h(101): error C2433: 'GLTriangleBatch::GLuint' : 'inline' not permitted on data declarations
1>c:\sb5\src\gltools\include\gltrianglebatch.h(101): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltrianglebatch.h(101): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltrianglebatch.h(101): warning C4183: 'GetIndexCount': missing return type; assumed to be a member function returning 'int'
1>c:\sb5\src\gltools\include\gltrianglebatch.h(102): error C2146: syntax error : missing ';' before identifier 'GetVertexCount'
1>c:\sb5\src\gltools\include\gltrianglebatch.h(102): error C2433: 'GLTriangleBatch::GLuint' : 'inline' not permitted on data declarations
1>c:\sb5\src\gltools\include\gltrianglebatch.h(102): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltrianglebatch.h(102): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltrianglebatch.h(102): warning C4183: 'GetVertexCount': missing return type; assumed to be a member function returning 'int'
1>c:\sb5\src\gltools\include\gltrianglebatch.h(109): error C2143: syntax error : missing ';' before '*'
1>c:\sb5\src\gltools\include\gltrianglebatch.h(109): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltrianglebatch.h(109): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltrianglebatch.h(114): error C2146: syntax error : missing ';' before identifier 'nMaxIndexes'
1>c:\sb5\src\gltools\include\gltrianglebatch.h(114): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltrianglebatch.h(114): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltrianglebatch.h(115): error C2146: syntax error : missing ';' before identifier 'nNumIndexes'
1>c:\sb5\src\gltools\include\gltrianglebatch.h(115): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltrianglebatch.h(115): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltrianglebatch.h(116): error C2146: syntax error : missing ';' before identifier 'nNumVerts'
1>c:\sb5\src\gltools\include\gltrianglebatch.h(116): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltrianglebatch.h(116): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltrianglebatch.h(118): error C2146: syntax error : missing ';' before identifier 'bufferObjects'
1>c:\sb5\src\gltools\include\gltrianglebatch.h(118): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltrianglebatch.h(118): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltrianglebatch.h(119): error C2146: syntax error : missing ';' before identifier 'vertexArrayBufferObject'
1>c:\sb5\src\gltools\include\gltrianglebatch.h(119): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltrianglebatch.h(119): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltrianglebatch.h(101): error C2065: 'nNumIndexes' : undeclared identifier
1>c:\sb5\src\gltools\include\gltrianglebatch.h(102): error C2065: 'nNumVerts' : undeclared identifier
1>c:\sb5\src\gltools\include\gltools.h(144): error C2065: 'GLint' : undeclared identifier
1>c:\sb5\src\gltools\include\gltools.h(144): error C2065: 'nMajor' : undeclared identifier
1>c:\sb5\src\gltools\include\gltools.h(144): error C2065: 'GLint' : undeclared identifier
1>c:\sb5\src\gltools\include\gltools.h(144): error C2065: 'nMinor' : undeclared identifier
1>c:\sb5\src\gltools\include\gltools.h(144): error C2182: 'gltGetOpenGLVersion' : illegal use of type 'void'
1>c:\sb5\src\gltools\include\gltools.h(144): error C2078: too many initializers
1>c:\sb5\src\gltools\include\gltools.h(153): error C2143: syntax error : missing ';' before '*'
1>c:\sb5\src\gltools\include\gltools.h(153): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltools.h(153): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltools.h(157): error C2143: syntax error : missing ';' before '*'
1>c:\sb5\src\gltools\include\gltools.h(157): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltools.h(157): error C2086: 'int GLbyte' : redefinition
1>          c:\sb5\src\gltools\include\gltools.h(153) : see declaration of 'GLbyte'
1>c:\sb5\src\gltools\include\gltools.h(157): error C2061: syntax error : identifier 'GLint'
1>c:\sb5\src\gltools\include\gltools.h(157): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltools.h(162): error C2146: syntax error : missing ';' before identifier 'gltGrabScreenTGA'
1>c:\sb5\src\gltools\include\gltools.h(162): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltools.h(162): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltools.h(167): error C2061: syntax error : identifier 'GLfloat'
1>c:\sb5\src\gltools\include\gltools.h(168): error C2061: syntax error : identifier 'GLfloat'
1>c:\sb5\src\gltools\include\gltools.h(169): error C2061: syntax error : identifier 'GLfloat'
1>c:\sb5\src\gltools\include\gltools.h(170): error C2061: syntax error : identifier 'GLfloat'
1>c:\sb5\src\gltools\include\gltools.h(171): error C2061: syntax error : identifier 'GLfloat'
1>c:\sb5\src\gltools\include\gltools.h(174): error C2061: syntax error : identifier 'GLuint'
1>c:\sb5\src\gltools\include\gltools.h(175): error C2061: syntax error : identifier 'GLuint'
1>c:\sb5\src\gltools\include\gltools.h(177): error C2146: syntax error : missing ';' before identifier 'gltLoadShaderPair'
1>c:\sb5\src\gltools\include\gltools.h(177): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltools.h(177): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltools.h(178): error C2146: syntax error : missing ';' before identifier 'gltLoadShaderPairWithAttributes'
1>c:\sb5\src\gltools\include\gltools.h(178): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltools.h(178): error C2086: 'int GLuint' : redefinition
1>          c:\sb5\src\gltools\include\gltools.h(177) : see declaration of 'GLuint'
1>c:\sb5\src\gltools\include\gltools.h(178): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltools.h(180): error C2146: syntax error : missing ';' before identifier 'gltLoadShaderPairSrc'
1>c:\sb5\src\gltools\include\gltools.h(180): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltools.h(180): error C2086: 'int GLuint' : redefinition
1>          c:\sb5\src\gltools\include\gltools.h(177) : see declaration of 'GLuint'
1>c:\sb5\src\gltools\include\gltools.h(180): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltools.h(181): error C2146: syntax error : missing ';' before identifier 'gltLoadShaderPairSrcWithAttributes'
1>c:\sb5\src\gltools\include\gltools.h(181): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltools.h(181): error C2086: 'int GLuint' : redefinition
1>          c:\sb5\src\gltools\include\gltools.h(177) : see declaration of 'GLuint'
1>c:\sb5\src\gltools\include\gltools.h(181): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\sb5\src\gltools\include\gltools.h(183): error C2146: syntax error : missing ')' before identifier 'progName'
1>c:\sb5\src\gltools\include\gltools.h(183): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
1>c:\sb5\src\gltools\include\gltools.h(183): error C2059: syntax error : ')'
1>c:\sb5\src\gltools\include\gltools.h(184): error C2146: syntax error : missing ')' before identifier 'width'
1>c:\sb5\src\gltools\include\gltools.h(184): error C2182: 'gltGenerateOrtho2DMat' : illegal use of type 'void'
1>c:\sb5\src\gltools\include\gltools.h(184): error C2059: syntax error : ')'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(46): error C2378: 'GLbyte' : redefinition; symbol cannot be overloaded with a typedef
1>          c:\sb5\src\gltools\include\gltools.h(153) : see declaration of 'GLbyte'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(48): error C2378: 'GLint' : redefinition; symbol cannot be overloaded with a typedef
1>          c:\sb5\src\gltools\include\gltools.h(162) : see declaration of 'GLint'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(52): error C2378: 'GLuint' : redefinition; symbol cannot be overloaded with a typedef
1>          c:\sb5\src\gltools\include\gltools.h(177) : see declaration of 'GLuint'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1154): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1154): error C2143: syntax error : missing ',' before '*'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1155): error C2146: syntax error : missing ')' before identifier 'i'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1155): warning C4229: anachronism used : modifiers on data are ignored
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1155): error C2182: 'glArrayElement' : illegal use of type 'void'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1155): error C2491: 'glArrayElement' : definition of dllimport data not allowed
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1155): error C2059: syntax error : ')'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1157): error C2061: syntax error : identifier 'GLuint'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1160): error C2146: syntax error : missing ')' before identifier 'list'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1160): warning C4229: anachronism used : modifiers on data are ignored
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1160): error C2182: 'glCallList' : illegal use of type 'void'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1160): error C2491: 'glCallList' : definition of dllimport data not allowed
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1160): error C2059: syntax error : ')'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1167): error C2146: syntax error : missing ')' before identifier 's'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1167): warning C4229: anachronism used : modifiers on data are ignored
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1167): error C2182: 'glClearStencil' : illegal use of type 'void'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1167): error C2491: 'glClearStencil' : definition of dllimport data not allowed
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1167): error C2059: syntax error : ')'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1169): error C2146: syntax error : missing ')' before identifier 'red'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1169): warning C4229: anachronism used : modifiers on data are ignored
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1169): error C2182: 'glColor3b' : illegal use of type 'void'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1169): error C2491: 'glColor3b' : definition of dllimport data not allowed
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1169): error C2059: syntax error : ')'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1170): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1170): error C2143: syntax error : missing ',' before '*'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1175): error C2146: syntax error : missing ')' before identifier 'red'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1175): warning C4229: anachronism used : modifiers on data are ignored
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1175): error C2182: 'glColor3i' : illegal use of type 'void'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1175): fatal error C1003: error count exceeds 100; stopping compilation
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.67
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

标题本身似乎有问题,即使我是从官方网站下载的。我还尝试在 Visual Studio 2010 C++ Express 中编译相同的代码和相同的错误。我不想使用 Code::blocks 因为我找不到使用类似的东西的好处。这一切似乎都很麻烦。我更喜欢在 Visual Studio 中工作。

编辑(添加源代码):

// Triangle.cpp
// Our first OpenGL program that will just draw a triangle on the screen.

#include <GLTools.h>            // OpenGL toolkit
#include <GLShaderManager.h>    // Shader Manager Class

#ifdef __APPLE__
#include <glut/glut.h>          // OS X version of GLUT
#else
#define FREEGLUT_STATIC
#include <GL/glut.h>            // Windows FreeGlut equivalent
#endif

GLBatch triangleBatch;
GLShaderManager shaderManager;

///////////////////////////////////////////////////////////////////////////////
// Window has changed size, or has just been created. In either case, we need
// to use the window dimensions to set the viewport and the projection matrix.
void ChangeSize(int w, int h)

    glViewport(0, 0, w, h);



///////////////////////////////////////////////////////////////////////////////
// This function does any needed initialization on the rendering context. 
// This is the first opportunity to do any OpenGL related tasks.
void SetupRC()

    // Blue background
    glClearColor(0.0f, 0.0f, 1.0f, 1.0f );

    shaderManager.InitializeStockShaders();

    // Load up a triangle
    GLfloat vVerts[] =  -0.5f, 0.0f, 0.0f, 
                          0.5f, 0.0f, 0.0f,
                          0.0f, 0.5f, 0.0f ;

    triangleBatch.Begin(GL_TRIANGLES, 3);
    triangleBatch.CopyVertexData3f(vVerts);
    triangleBatch.End();




///////////////////////////////////////////////////////////////////////////////
// Called to draw scene
void RenderScene(void)

    // Clear the window with current clearing color
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);

    GLfloat vRed[] =  1.0f, 0.0f, 0.0f, 1.0f ;
    shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
    triangleBatch.Draw();

    // Perform the buffer swap to display back buffer
    glutSwapBuffers();



///////////////////////////////////////////////////////////////////////////////
// Main entry point for GLUT based programs
int main(int argc, char* argv[])

    gltSetWorkingDirectory(argv[0]);

    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);
    glutInitWindowSize(800, 600);
    glutCreateWindow("Triangle");
    glutReshapeFunc(ChangeSize);
    glutDisplayFunc(RenderScene);

    GLenum err = glewInit();
    if (GLEW_OK != err) 
        fprintf(stderr, "GLEW Error: %s\n", glewGetErrorString(err));
        return 1;
    

    SetupRC();

    glutMainLoop();
    return 0;

【问题讨论】:

你能告诉我们你的代码吗?我在这里假设,但是你在 glbatch.h 之后包含 windows.h 吗? 知道我忘记了什么!一旦我弄清楚如何编辑,我就会这样做。另外,不,我没有。 你可能需要告诉编译器你包含的头文件是 C 风格的,带有 extern "C" #include "gl.h" 似乎当我在编辑中添加代码时,它说我需要使用 CTRL + K 缩进它,但它不起作用。所以这里是 pastebin 链接:pastebin.com/DtAtgFZB 确保在 gltools.h 之前包含 windows.h 【参考方案1】:

当第一次在 Windows 操作系统上使用 OpenGL 的用户开始开发他们的软件时,您看到的错误确实会经常出现。虽然在这种情况下,错误消息会被 glbatch.h 稍微掩盖,通常错误会指向 gl.h。

如果您使用的是 Windows,请确保在包含 gl.h 或任何其他可能间接包含 gl.h 的文件之前包含 windows.h

如MSDN 所述,这是 OpenGL 工作所必需的。

【讨论】:

以上是关于OpenGL SuperBible 头文件问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在 OpenGL Superbible 第 6 版中构建和运行示例?

OpenGL顶点缓冲区对象,我可以访问顶点数据以用于其他用途,例如碰撞检测吗?

如何从 SuperBible 获取 GLTools 库以在 Ubuntu 中工作?或替代方案? [关闭]

多个错误,在VS2017的头文件中,opengl项目C++

OpenGL ES - 查找预编译头文件时意外结束

如何使用用于 iPhone 开发的 OpenGL ES 渲染 3D 对象(顶点和法线存储在头文件中)?