glew.h之前包含致命错误gl.h

时间:2014-01-28 19:46:06

标签: opengl glut

#include<Windows.h>
#include <GL/freeglut.h>
#include <GL/glew.h>
#include<gl/GLU.h>
#include<gl/GL.h>
#include<iostream>
using namespace std;

const int width=1280;
const int height=960;
void OnInit();
void OnShutdown();
void OnResize();
void OnRender();

int main(int argc, char** argv) {
glutInit(&argc, argv);  
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE |
GLUT_RGBA);  
glutInitContextVersion (3,7     );
glutInitContextFlags (GLUT_CORE_PROFILE | GLUT_DEBUG);
glutInitContextProfile(GLUT_FORWARD_COMPATIBLE);
glutInitWindowSize(width, height);
glutCreateWindow("getting started with understanding");



glewExperimental = GL_TRUE;
GLenum err = glewInit();
if (GLEW_OK != err){
cerr<<"Error: "<<glewGetErrorString(err)<<endl;
} else {
if (GLEW_VERSION_3_3)
{
cout<<"Driver supports OpenGL 3.3\nDetails:"<<endl;
}   
}
cout<<"\tUsing glew "<<glewGetString(GLEW_VERSION)<<endl;
cout<<"\tVendor: "<<glGetString (GL_VENDOR)<<endl;
cout<<"\tRenderer: "<<glGetString (GL_RENDERER)<<endl;
cout<<"\tVersion: "<<glGetString (GL_VERSION)<<endl;
cout<<"\tGLSL:"<<glGetString(GL_SHADING_LANGUAGE_VERSION)<<endl;


OnInit();
glutCloseFunc(OnShutdown);
glutDisplayFunc(OnRender);
glutReshapeFunc(OnResize);
glutMainLoop();
return 0;

}

void OnInit() {
glClearColor(1,0,0,0);
cout<<"Initialization successfull"<<endl; 
}
void OnShutdown() {
cout<<"Shutdown successfull"<<endl;
}
void OnResize(int nw, int nh) {

}
void OnRender() {
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glutSwapBuffers();
}

当我在Microsoft Visual Studio中构建源代码时发出错误 “e:\ vs2012 \ vc \ include \ gl \ glew.h(84):致命错误C1189:#leror:gl.h包含在glew.h之前”。 我还在gl.h之前包含了glew.h 可能是什么问题?

1 个答案:

答案 0 :(得分:5)

freeglut.h将包含gl.h。您必须在glew.h之前加入freeglut.h。 glew是一个非常好的和受欢迎的库,但这个gl.h included before glew.h是一个主要的约束!