2015-11-02 146 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