title: OpenGL SuperBible header problem
body: <p>Recently I got myself the OpenGL SuperBible 5th edition. All happy I started reading and when I got to the first section on how to set up everything properly I ran in to some problems that both Google and other StackOverflow questions were unable to answer.</p>
  
  <p>I'd like to make clear that I use <strong>Visual Studio 2010</strong> and that everything is linked correctly.</p>
  
  <p>I've downloaded the libs and headers from the official OpenGL Superbible website.</p>
  
  <p>So when I write the first program called Triangle.cpp and try to compile it, it gives the following errors.</p>
  
  <pre><code>1&gt;------ Build started: Project: OpenGL, Configuration: Debug Win32 ------
  1&gt;Build started 7/19/2011 9:21:27 PM.
  1&gt;InitializeBuildStatus:
  1&gt;  Touching "Debug\OpenGL.unsuccessfulbuild".
  1&gt;ClCompile:
  1&gt;  Triangle.cpp
  1&gt;c:\sb5\src\gltools\include\glbatch.h(77): error C2061: syntax error : identifier 'GLenum'
  1&gt;c:\sb5\src\gltools\include\glbatch.h(86): error C2061: syntax error : identifier 'GLuint'
  1&gt;c:\sb5\src\gltools\include\glbatch.h(89): error C2061: syntax error : identifier 'GLfloat'
  1&gt;c:\sb5\src\gltools\include\glbatch.h(90): error C2061: syntax error : identifier 'GLfloat'
  1&gt;c:\sb5\src\gltools\include\glbatch.h(91): error C2061: syntax error : identifier 'GLfloat'
  1&gt;c:\sb5\src\gltools\include\glbatch.h(92): error C2061: syntax error : identifier 'GLfloat'
  1&gt;c:\sb5\src\gltools\include\glbatch.h(100): error C2061: syntax error : identifier 'GLfloat'
  1&gt;c:\sb5\src\gltools\include\glbatch.h(103): error C2061: syntax error : identifier 'GLfloat'
  1&gt;c:\sb5\src\gltools\include\glbatch.h(106): error C2061: syntax error : identifier 'GLfloat'
  1&gt;c:\sb5\src\gltools\include\glbatch.h(109): error C2061: syntax error : identifier 'GLuint'
  1&gt;c:\sb5\src\gltools\include\glbatch.h(110): error C2061: syntax error : identifier 'GLuint'
  1&gt;c:\sb5\src\gltools\include\glbatch.h(113): error C2146: syntax error : missing ';' before identifier 'primitiveType'
  1&gt;c:\sb5\src\gltools\include\glbatch.h(113): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glbatch.h(113): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glbatch.h(115): error C2146: syntax error : missing ';' before identifier 'uiVertexArray'
  1&gt;c:\sb5\src\gltools\include\glbatch.h(115): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glbatch.h(115): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glbatch.h(116): error C2146: syntax error : missing ';' before identifier 'uiNormalArray'
  1&gt;c:\sb5\src\gltools\include\glbatch.h(116): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glbatch.h(116): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glbatch.h(117): error C2146: syntax error : missing ';' before identifier 'uiColorArray'
  1&gt;c:\sb5\src\gltools\include\glbatch.h(117): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glbatch.h(117): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glbatch.h(118): error C2143: syntax error : missing ';' before '*'
  1&gt;c:\sb5\src\gltools\include\glbatch.h(118): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glbatch.h(118): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glbatch.h(119): error C2146: syntax error : missing ';' before identifier 'vertexArrayObject'
  1&gt;c:\sb5\src\gltools\include\glbatch.h(119): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glbatch.h(119): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glbatch.h(121): error C2146: syntax error : missing ';' before identifier 'nVertsBuilding'
  1&gt;c:\sb5\src\gltools\include\glbatch.h(121): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glbatch.h(121): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glbatch.h(122): error C2146: syntax error : missing ';' before identifier 'nNumVerts'
  1&gt;c:\sb5\src\gltools\include\glbatch.h(122): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glbatch.h(122): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glbatch.h(123): error C2146: syntax error : missing ';' before identifier 'nNumTextureUnits'
  1&gt;c:\sb5\src\gltools\include\glbatch.h(123): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glbatch.h(123): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glbatch.h(89): error C2065: 'vVerts' : undeclared identifier
  1&gt;c:\sb5\src\gltools\include\glbatch.h(90): error C2065: 'vNorms' : undeclared identifier
  1&gt;c:\sb5\src\gltools\include\glbatch.h(91): error C2065: 'vColors' : undeclared identifier
  1&gt;c:\sb5\src\gltools\include\glbatch.h(92): error C2065: 'vTex' : undeclared identifier
  1&gt;c:\sb5\src\gltools\include\glbatch.h(92): error C2065: 'uiTextureLayer' : undeclared identifier
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(85): error C2146: syntax error : missing ';' before identifier 'uiShaderID'
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(85): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(85): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(99): error C2146: syntax error : missing ';' before identifier 'GetStockShader'
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(99): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(99): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(99): warning C4183: 'GetStockShader': missing return type; assumed to be a member function returning 'int'
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(102): error C2146: syntax error : missing ';' before identifier 'UseStockShader'
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(102): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(102): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(102): warning C4183: 'UseStockShader': missing return type; assumed to be a member function returning 'int'
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(107): error C2146: syntax error : missing ';' before identifier 'LoadShaderPair'
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(107): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(107): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(107): warning C4183: 'LoadShaderPair': missing return type; assumed to be a member function returning 'int'
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(110): error C2146: syntax error : missing ';' before identifier 'LoadShaderPairSrc'
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(110): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(110): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(110): warning C4183: 'LoadShaderPairSrc': missing return type; assumed to be a member function returning 'int'
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(113): error C2146: syntax error : missing ';' before identifier 'LoadShaderPairWithAttributes'
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(113): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(113): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(113): warning C4183: 'LoadShaderPairWithAttributes': missing return type; assumed to be a member function returning 'int'
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(114): error C2146: syntax error : missing ';' before identifier 'LoadShaderPairSrcWithAttributes'
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(114): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(114): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(114): warning C4183: 'LoadShaderPairSrcWithAttributes': missing return type; assumed to be a member function returning 'int'
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(117): error C2146: syntax error : missing ';' before identifier 'LookupShader'
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(117): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(117): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(117): warning C4183: 'LookupShader': missing return type; assumed to be a member function returning 'int'
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(120): error C2146: syntax error : missing ';' before identifier 'uiStockShaders'
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(120): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\glshadermanager.h(120): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(96): error C2061: syntax error : identifier 'GLuint'
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(101): error C2146: syntax error : missing ';' before identifier 'GetIndexCount'
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(101): error C2433: 'GLTriangleBatch::GLuint' : 'inline' not permitted on data declarations
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(101): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(101): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(101): warning C4183: 'GetIndexCount': missing return type; assumed to be a member function returning 'int'
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(102): error C2146: syntax error : missing ';' before identifier 'GetVertexCount'
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(102): error C2433: 'GLTriangleBatch::GLuint' : 'inline' not permitted on data declarations
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(102): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(102): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(102): warning C4183: 'GetVertexCount': missing return type; assumed to be a member function returning 'int'
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(109): error C2143: syntax error : missing ';' before '*'
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(109): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(109): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(114): error C2146: syntax error : missing ';' before identifier 'nMaxIndexes'
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(114): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(114): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(115): error C2146: syntax error : missing ';' before identifier 'nNumIndexes'
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(115): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(115): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(116): error C2146: syntax error : missing ';' before identifier 'nNumVerts'
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(116): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(116): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(118): error C2146: syntax error : missing ';' before identifier 'bufferObjects'
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(118): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(118): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(119): error C2146: syntax error : missing ';' before identifier 'vertexArrayBufferObject'
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(119): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(119): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(101): error C2065: 'nNumIndexes' : undeclared identifier
  1&gt;c:\sb5\src\gltools\include\gltrianglebatch.h(102): error C2065: 'nNumVerts' : undeclared identifier
  1&gt;c:\sb5\src\gltools\include\gltools.h(144): error C2065: 'GLint' : undeclared identifier
  1&gt;c:\sb5\src\gltools\include\gltools.h(144): error C2065: 'nMajor' : undeclared identifier
  1&gt;c:\sb5\src\gltools\include\gltools.h(144): error C2065: 'GLint' : undeclared identifier
  1&gt;c:\sb5\src\gltools\include\gltools.h(144): error C2065: 'nMinor' : undeclared identifier
  1&gt;c:\sb5\src\gltools\include\gltools.h(144): error C2182: 'gltGetOpenGLVersion' : illegal use of type 'void'
  1&gt;c:\sb5\src\gltools\include\gltools.h(144): error C2078: too many initializers
  1&gt;c:\sb5\src\gltools\include\gltools.h(153): error C2143: syntax error : missing ';' before '*'
  1&gt;c:\sb5\src\gltools\include\gltools.h(153): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltools.h(153): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltools.h(157): error C2143: syntax error : missing ';' before '*'
  1&gt;c:\sb5\src\gltools\include\gltools.h(157): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltools.h(157): error C2086: 'int GLbyte' : redefinition
  1&gt;          c:\sb5\src\gltools\include\gltools.h(153) : see declaration of 'GLbyte'
  1&gt;c:\sb5\src\gltools\include\gltools.h(157): error C2061: syntax error : identifier 'GLint'
  1&gt;c:\sb5\src\gltools\include\gltools.h(157): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltools.h(162): error C2146: syntax error : missing ';' before identifier 'gltGrabScreenTGA'
  1&gt;c:\sb5\src\gltools\include\gltools.h(162): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltools.h(162): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltools.h(167): error C2061: syntax error : identifier 'GLfloat'
  1&gt;c:\sb5\src\gltools\include\gltools.h(168): error C2061: syntax error : identifier 'GLfloat'
  1&gt;c:\sb5\src\gltools\include\gltools.h(169): error C2061: syntax error : identifier 'GLfloat'
  1&gt;c:\sb5\src\gltools\include\gltools.h(170): error C2061: syntax error : identifier 'GLfloat'
  1&gt;c:\sb5\src\gltools\include\gltools.h(171): error C2061: syntax error : identifier 'GLfloat'
  1&gt;c:\sb5\src\gltools\include\gltools.h(174): error C2061: syntax error : identifier 'GLuint'
  1&gt;c:\sb5\src\gltools\include\gltools.h(175): error C2061: syntax error : identifier 'GLuint'
  1&gt;c:\sb5\src\gltools\include\gltools.h(177): error C2146: syntax error : missing ';' before identifier 'gltLoadShaderPair'
  1&gt;c:\sb5\src\gltools\include\gltools.h(177): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltools.h(177): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltools.h(178): error C2146: syntax error : missing ';' before identifier 'gltLoadShaderPairWithAttributes'
  1&gt;c:\sb5\src\gltools\include\gltools.h(178): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltools.h(178): error C2086: 'int GLuint' : redefinition
  1&gt;          c:\sb5\src\gltools\include\gltools.h(177) : see declaration of 'GLuint'
  1&gt;c:\sb5\src\gltools\include\gltools.h(178): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltools.h(180): error C2146: syntax error : missing ';' before identifier 'gltLoadShaderPairSrc'
  1&gt;c:\sb5\src\gltools\include\gltools.h(180): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltools.h(180): error C2086: 'int GLuint' : redefinition
  1&gt;          c:\sb5\src\gltools\include\gltools.h(177) : see declaration of 'GLuint'
  1&gt;c:\sb5\src\gltools\include\gltools.h(180): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltools.h(181): error C2146: syntax error : missing ';' before identifier 'gltLoadShaderPairSrcWithAttributes'
  1&gt;c:\sb5\src\gltools\include\gltools.h(181): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltools.h(181): error C2086: 'int GLuint' : redefinition
  1&gt;          c:\sb5\src\gltools\include\gltools.h(177) : see declaration of 'GLuint'
  1&gt;c:\sb5\src\gltools\include\gltools.h(181): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
  1&gt;c:\sb5\src\gltools\include\gltools.h(183): error C2146: syntax error : missing ')' before identifier 'progName'
  1&gt;c:\sb5\src\gltools\include\gltools.h(183): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
  1&gt;c:\sb5\src\gltools\include\gltools.h(183): error C2059: syntax error : ')'
  1&gt;c:\sb5\src\gltools\include\gltools.h(184): error C2146: syntax error : missing ')' before identifier 'width'
  1&gt;c:\sb5\src\gltools\include\gltools.h(184): error C2182: 'gltGenerateOrtho2DMat' : illegal use of type 'void'
  1&gt;c:\sb5\src\gltools\include\gltools.h(184): error C2059: syntax error : ')'
  1&gt;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&gt;          c:\sb5\src\gltools\include\gltools.h(153) : see declaration of 'GLbyte'
  1&gt;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&gt;          c:\sb5\src\gltools\include\gltools.h(162) : see declaration of 'GLint'
  1&gt;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&gt;          c:\sb5\src\gltools\include\gltools.h(177) : see declaration of 'GLuint'
  1&gt;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&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1154): error C2143: syntax error : missing ',' before '*'
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1155): error C2146: syntax error : missing ')' before identifier 'i'
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1155): warning C4229: anachronism used : modifiers on data are ignored
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1155): error C2182: 'glArrayElement' : illegal use of type 'void'
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1155): error C2491: 'glArrayElement' : definition of dllimport data not allowed
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1155): error C2059: syntax error : ')'
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1157): error C2061: syntax error : identifier 'GLuint'
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1160): error C2146: syntax error : missing ')' before identifier 'list'
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1160): warning C4229: anachronism used : modifiers on data are ignored
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1160): error C2182: 'glCallList' : illegal use of type 'void'
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1160): error C2491: 'glCallList' : definition of dllimport data not allowed
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1160): error C2059: syntax error : ')'
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1167): error C2146: syntax error : missing ')' before identifier 's'
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1167): warning C4229: anachronism used : modifiers on data are ignored
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1167): error C2182: 'glClearStencil' : illegal use of type 'void'
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1167): error C2491: 'glClearStencil' : definition of dllimport data not allowed
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1167): error C2059: syntax error : ')'
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1169): error C2146: syntax error : missing ')' before identifier 'red'
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1169): warning C4229: anachronism used : modifiers on data are ignored
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1169): error C2182: 'glColor3b' : illegal use of type 'void'
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1169): error C2491: 'glColor3b' : definition of dllimport data not allowed
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1169): error C2059: syntax error : ')'
  1&gt;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&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1170): error C2143: syntax error : missing ',' before '*'
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1175): error C2146: syntax error : missing ')' before identifier 'red'
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1175): warning C4229: anachronism used : modifiers on data are ignored
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1175): error C2182: 'glColor3i' : illegal use of type 'void'
  1&gt;c:\program files (x86)\microsoft sdks\windows\v7.0a\include\gl\gl.h(1175): fatal error C1003: error count exceeds 100; stopping compilation
  1&gt;
  1&gt;Build FAILED.
  1&gt;
  1&gt;Time Elapsed 00:00:00.67
  ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
  </code></pre>
  
  <p>It seems like there is a problem with the headers itself, even though I downloaded them from the official website. I've also tried to compile the same code in Visual Studio 2010 C++ Express and the same errors. I don't want to use Code::blocks because I can find no advantages to using something like that. It all seems like a hassle. I prefer working in Visual Studio.</p>
  
  <p><strong>Edit (added source code):</strong></p>
  
  <pre><code>// Triangle.cpp
  // Our first OpenGL program that will just draw a triangle on the screen.
  
  #include &lt;GLTools.h&gt;            // OpenGL toolkit
  #include &lt;GLShaderManager.h&gt;    // Shader Manager Class
  
  #ifdef __APPLE__
  #include &lt;glut/glut.h&gt;          // OS X version of GLUT
  #else
  #define FREEGLUT_STATIC
  #include &lt;GL/glut.h&gt;            // 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(&amp;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;
  }
  </code></pre>