C ++ OpenGL:glew.h之前包含的错误gl.h

时间:2016-03-04 13:17:35

标签: c++ opengl

我目前正在尝试用OpenGL编写一个小游戏。我有两节课:

  • CoreEngine:用于管理窗口,渲染,更新等
  • 网格:用于创建和管理网格

来自CoreEngine.h的包含:

#define GLEW_STATIC
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <vector>

#include "RenderingEngine.h"
#include "GameObject.h"

来自Mesh.h的包含:

#ifndef _MESH_H_
#define _MESH_H_
#define GLEW_STATIC
#include <GL/glew.h>
#include <GLFW/glfw3.h>

#include <string>

原因是我需要在CoreEngine.h和Mesh.h中使用OpenGL中的函数,但是当我尝试编译时,我得到了这个错误:

Fehler  1   error C1189: #error :  gl.h included before glew.h

我无法找到办法,以防止出现此错误并同时在两个类中使用OpenGL函数。

1 个答案:

答案 0 :(得分:0)

首先,检查是否启用了预编译头文件(stdafx.h) - 如果这样做,请不要。 - 在软件开发的十五年中,我只有一个需要预编译头的项目。甚至在那里它引起了无穷无尽的初级开发人员的头痛。

其次,检查您的个人CPP文件,您可能会找到诸如

之类的内容
#include <gl/gl.h>
#include "mesh.h"

最后作为第一个也是最后一个(对于视觉工作室用户),例如你自己,你可以显示所有包含语句的列表,以及它们所包含的顺序:using /show includes - See this question for details

你可能会发现其他一些库在程序的早期版本中包含了gl.h(例如图形导入库,甚至是数学库(例如glm)。使用import-graph为此问题是推荐的方法。