2015-11-02 172 views
0

我正在编写一个OpenGL程序,我正在编译通过MinGW。我已经成功地将OpenGL,GLUT,GLFW和GLM链接到我的main.cpp文件。鉴于以下标题:使用MinGW编译时链接GLEW库

#include "GL/glut.h" 
#include "GLFW/glfw3.h" 
#include "GL/glew.h" 
#include "glm/vec3.hpp" 

而下面的CMD线:

g++ -o leaf.exe -Wall physics.cpp -mwindows lib/glut32.lib -lopengl32 -lglu32 -lglfw3dll -lglew32 -IC:/MinGW/include/GL 

我设法得到它编译成功。然而,放置在.a文件中的MinGW/lib下,在源文件夹中的.dll文件和在C h文件:\ MinGW的\ include和添加

#include "GL/glew.h" 

用下面的命令行

g++ -o leaf.exe -Wall physics.cpp -mwindows lib/glut32.lib -lopengl32 -lglu32 -lglfw3dll -lglew32 -IC:/MinGW/include/GL 

然后我得到的错误,包括一个长长的清单:

In file included from physics.cpp:6:0: 
c:\mingw\include\gl\glew.h:85:2: error: #error gl.h included before glew.h 
#error gl.h included before glew.h 

In file included from physics.cpp:6:0: 
c:\mingw\include\gl\glew.h:1814:94: error: 'GLchar' does not name a type 
typedef void (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar* name); 

我的第一次尝试,使一些没有使用Visual Studio或者Eclipse。尝试了很多我在这里找到的修复,但没有具体。

感谢您的阅读!

回答

1

您需要重新排列包括:

#include "GL/glew.h" 
#include "GL/glut.h" 
#include "GLFW/glfw3.h" 
#include "glm/vec3.hpp" 

GLFW自动包含GL.h,这是什么GLEW抱怨(和GLUT?)。不知道为什么你在同一个版本中使用GLUT和GLFW,他们并不完全一起...

+0

完美!谢谢,请问为什么订单很重要?只是让我更了解它! 我在网上学习了一个教程,并且一直在使用GLUT进行一些以前的项目,并且认为它们都使用它们,但是如果它们不在一起,我会尝试和我正在阅读的教程一起学习GLEW :) 再次感谢! –

+0

检查GLEW.h,在那里有一行检查GL.h是否已被包含,如果是,则触发#error。 – Shokwav