#Fehler gl.h enthalten, bevor glew.h

So, ich versuche mich zu bewegen, meine OpenGL-code von Main() in eine bestimmte Klasse, die sich um die 3D-Grafik nur bei Bedarf. Zuvor, die Spitze von meiner main.cpp Datei sah so aus:

#define GLEW_STATIC
#include <GL/glew.h>
#include <SFML/Graphics.hpp>
#include <cstdlib>
#include <iostream>
#include <fstream>
#include "Game.h"

Dies funktionierte gut genug. Was ich versucht habe zu tun war, verschieben Sie alle OpenGL-relevanten code in Methoden der Game Klasse. So entfernte ich #define GLEW_STATIC und #include <GL/glew.h> von oben, und setzen Sie Sie in das Spiel.h, so dass die Spitze des Spiels.h sieht nun wie folgt aus:

#define GLEW_STATIC
#include <GL/glew.h>
#include <SFML/Graphics.hpp>
#include <cstdlib>
#include <iostream>
#include <fstream>
#include "Environment.h"

Wenn ich versuche zu kompilieren, bekomme ich die Titel Fehler #error gl.h included before glew.h.

Warum ist das passiert und wie kann ich das OpenGL-code (fast) vollständig innerhalb der Funktionen einer bestimmten Klasse an, ohne dass dies passiert?

EDIT:

Habe ich auch versucht diese Konfiguration in main.cpp in einem Versuch, um sicherzustellen, dass nichts enthält SFML vor GLEW.

#include <cstdlib>
#include <iostream>
#include <fstream>
#include "Game.h"
#include <SFML/Graphics.hpp>

Leider nicht helfen (es ist nichts anderes enthalten, das bin ich nicht, hier zu erwähnen).

  • Heißt das, du bist jetzt #inklusive glew.h zweimal an, einmal aus main.cpp und einmal aus dem Spiel.h? Ich denke, glew.h ist nicht geschrieben für die, die (entweder keine Wachen oder #pragma), so werden Sie entweder, um Ihre eigenen Wachen oder darauf achten, es genau einmal.
  • GLEW hat die #include-guards. Es ist eine andere Bibliothek, die einschließlich von gl.h. Vielleicht SFML.
  • Nein, ich entfernen Sie Sie aus main.cpp. Ich nehme an es könnte sein, SFML, aber ich hatte den Eindruck, dass es nicht automatisch gl.h, da gibt es einige Anleitungen für Sie, die wollen, dass du explizit die Datei. Ich werde hantieren mit, und sehen, ob das löst alles - aber ich muss noch SFML verwenden in main.cpp zumindest mit meinem aktuellen setup.
  • Ich habe gerade versucht #inklusive " - Spiel.h" vor <SFML/Graphics.hpp>, so dass nichts SFML-Verwandte kommen würden, bevor das Spiel.h, aber ich bekomme immer noch den gleichen Fehler.
  • Man könnte hinzufügen #error included here an die Spitze der gl.h. Das sollte Ihnen ein Fehler sich mit den Einzelheiten von wo die Aufnahme stammt.
InformationsquelleAutor GarrickW | 2011-12-20
Schreibe einen Kommentar