2013-03-18 91 views
3

我在Qt4.8上有項目並試圖用Qt5.1構建它。我收到很多OpenGL與Qt5:#error gl.h包含在glew.h之前

#error gl.h included before glew.h 

#error glext.h included before glew.h 

錯誤。似乎它是Qt5與OpenGL的巨大變化..所有包括是

#include "GL/glew.h" 
#include "GL/gl.h" 
#include "GL/glu.h" 

glew.h始終是第一個。

+0

您是否首先包含其他包含'gl.h'的其他內容?也許像Qt頭文件? GLEW應該包含在其中任何一個之前。 – 2013-03-18 14:39:07

+0

@NicolBolas不,#include「GL/glew.h」永遠是第一個 – Littlebitter 2013-03-18 14:39:47

+0

預編譯頭文件嗎? – dowhilefor 2013-03-18 14:45:28

回答

-1

在某些.h文件中是否首先包含標題並不重要。標頭文件不是獨立的。重要的是從源文件中看到包含的順序。

你似乎有太多的標題包含(一般來說,你應該保持標題到標題包含到絕對最小值)。我們最終沒有辦法解決這個問題;你只需要解決你的頭問題。

+5

這太窮了,無法被選爲最佳答案 – 2013-05-23 04:44:13

1

在你使用GLEW需要加載的函數的類中,你只能使用OPENGL調用,那麼這將起作用。

我所做的解決這個問題的方法是在.CPP文件中包含所有GLEW h,但在包含頭文件(其中包含OPENGL的QTGUI)之前。

所以這是GLWIDGET.CPP對我的方式:

#include <GL/glew.h> 
#include <GL/gl.h> 
#include <GL/glu.h> 

#include <GLWidget.h> 

正如你所看到的,我的GLWidget是QGLWidget來繪圖,其中需要包括QTGUI和所有的未來派生類。