3

Qt4.8 にプロジェクトがあり、Qt5.1 でビルドしようとしています。たくさん頂いています

#error gl.h included before glew.h 

#error glext.h included before glew.h

エラー。OpenGL を使用した Qt5 の大きな変更のようです。すべてのインクルードは

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

glew.h は常に最初です。

4

2 に答える 2

1

GLEWを使用してロードする必要がある関数を使用するクラスでOPENGL呼び出しのみを使用すると仮定すると、これは機能します。

これを修正するために私がしたことは、すべての GLEW h を .CPP ファイルに含めることですが、ヘッダー ファイルを含める前に (QTGUI には OPENGL が含まれています)。

したがって、これはGLWIDGET.CPPでの私の方法です:

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

#include <GLWidget.h>

ご覧のとおり、私の GLWidget は QGLWidget から派生したクラスであり、QTGUI とそのすべてを含める必要があります。

于 2014-04-16T20:24:03.487 に答える
-1

ヘッダーが最初に.hファイルに含まれているかどうかは関係ありません。ヘッダーファイルはスタンドアロンではありません。重要なのは、ソースファイルから見たインクルードの順序です。

ヘッダーの包含が多すぎるようです(一般的に言えば、ヘッダー間の包含を最小限に抑える必要があります)。それを修正するために私たちの側でできることは何もありません。ヘッダーの問題を解決する必要があります。

于 2013-03-18T16:56:47.113 に答える