2009-01-10 25 views
17

Kompilieren einer Datei enthält, die mit Visual C++ OpenGL verwendet, wenn ich die gl.h Header-Datei ich etwa 150 nicht hilfreich kompilieren Fehler erhalten versuchen, schließen ein:VC++ Fehler kompilieren, wenn gl.h

Fehler C2144: Syntaxfehler: Vor 'void' sollte ';'

Fehler C4430: fehlender Typspezifizierer - int wird angenommen. Hinweis: C++ unterstützt nicht default-int

Fehler C2146: Syntaxfehler: fehlende ';' vor Bezeichner 'glAccum'

usw.

Antwort

43

Nur #include <windows.h> vor <gl/gl.h> oder <gl/glu.h>. Es wird für einige Typen wie WINGDIAPI und APIENTRY benötigt.

+2

Wie mache ich das richtig ohne die Windows.h? – mr5

1

Klingt wie Sie einen C-Header in einem C++ Projekt sind inklusive. Versuchen Sie, Ihre Anweisung innerhalb umfassen umschließenden:

extern "C" { 
#include "gl.h" 
} 
-1

Die erste Möglichkeit zu berücksichtigen ist, dass der Compiler-Meldungen sind tatsächlich Recht. Sicherlich waren in diesen Fehlermeldungen Zeilennummern enthalten. Haben Sie sich also die fehlerhaften Zeilen und einige der vorhergehenden Zeilen angesehen, um herauszufinden, was die Ursache sein könnte?

Gab es noch andere Nachrichten, die vor den von Ihnen genannten kamen? (Ein fehlender Header zum Beispiel?) Beginnen Sie immer Compiler-Nachrichten von der ersten zu adressieren; Spätere sind manchmal nur Nebenwirkungen, die dadurch verursacht werden.

Können Sie das Problem in einem einfachen Projekt reproduzieren? Ist es genug, einfach #include <gl.h> in eine ansonsten leere Datei zu schreiben und zu versuchen, sie zu kompilieren? Oder gibt es mehr über diesen Quellcode, der den Fehler verursacht?

Denken Sie daran, dass Sie sind der eine hier mit Zugriff auf Ihren Code; Die Fragen, die ich oben stelle, sind die Dinge, die Sie beachten müssen, da Sie nicht immer jemand anderen Ihren Code für Sie debuggen lassen können.

2

Wenn Sie Visual C++ verwenden, stellen Sie sicher, dass Sie bereits über die OpenGL-Bibliothek verfügen. Verwendung #include <windows.h> vor dem #include <GL/gl.h> und wenn Sie #include <glut.h> in Ihrem Programm stellen Sie sicher, verwenden Sie nicht wie diese Typ sind #include <GL/glut.h>, wenn Sie wie geben, dass es Fehler sein kann „GL/glut.h keine solche Datei oder das Verzeichnis“