c++ - instalar - #error gl.h incluido antes glew.h
set up sfml (2)
Alguna otra biblioteca incluye gl.h. Mi conjetura sería SFML. Asegúrate de incluir primero GLEW en Game.h y comprueba los lugares donde incluyes Game.h para asegurarte de que no incluyas SFML u otra cosa que incluya gl.h antes de Game.h.
Si tienes algo como:
#include <something_that_includes_gl.h>
#include "Game.h"
Incluirá efectivamente gl.h antes de GLEW.
Así que estoy tratando de mover mi código OpenGL de Main () a una clase específica que manejará los gráficos 3D solo cuando sea necesario. Anteriormente, la parte superior de mi archivo main.cpp se veía así:
#define GLEW_STATIC
#include <GL/glew.h>
#include <SFML/Graphics.hpp>
#include <cstdlib>
#include <iostream>
#include <fstream>
#include "Game.h"
Esto funcionó bastante bien. Lo que traté de hacer fue mover todo el código relevante para OpenGL a los métodos de la clase Game
. Así que #define GLEW_STATIC
y #include <GL/glew.h>
de los de arriba, y los puse en Game.h, de modo que la parte superior de Game.h ahora se ve así:
#define GLEW_STATIC
#include <GL/glew.h>
#include <SFML/Graphics.hpp>
#include <cstdlib>
#include <iostream>
#include <fstream>
#include "Environment.h"
Cuando intento compilar, #error gl.h included before glew.h
error de título, #error gl.h included before glew.h
¿Por qué sucede esto y cómo puedo usar el código OpenGL (casi) completamente dentro de las funciones de una clase específica sin que esto ocurra?
EDITAR:
También probé esta configuración en main.cpp, en un intento de asegurarme de que nada incluye SFML antes de GLEW.
#include <cstdlib>
#include <iostream>
#include <fstream>
#include "Game.h"
#include <SFML/Graphics.hpp>
Desafortunadamente, eso no ayuda (no se incluye nada más que no mencione aquí).
Creo que tuve este problema una vez también. De alguna manera es causada por la forma SFML (1.6?) Incluye las cosas OpenGL.
IIRC (ha pasado un tiempo y no necesito GLEW más desde que cambié a SFML2) se debe a Graphics.hpp de SFML que incluye GLEW.h, también. No debería ocurrir debido a la inclusión de guardias, pero creo que con algunas versiones esto aún podría suceder. Es posible que omita por completo el encabezado de GLEW, ya que está incluido a través de SFML de todos modos.
¿Qué versión de SFML estás ejecutando? 1.6, 2.0 o 2.0 con la nueva API? Además, ¿cuál es el motivo para usar GLEW? Algo que te falta de SFML? Tal vez sea algo incluido en la última versión, por lo que no tiene que incluirlo también.