スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

GLEWとQtのヘッダを同時にインクルードできない件

かなり前から気になっていたのですが、どうも、Qtのヘッダとglewを同時に
インクルードすると、ビルドが正常に出来なくなってしまうらしく、たとえば

#include <gl/glew.h>

#include <QtOpenGL/qgl.h>

void f()
{
    glUseProgram(0);
}

このような非常に簡単なコードをビルドしても、

error C3861: 'glUseProgram': 識別子が見つかりませんでした


のような感じでビルドエラーになってしまいます。

一番簡単な解決方法としては単純にQt依存部分とOpenGL系の処理の実装を分離することなのですが、
もう少しまともな回避方法がないのかと思い調べてみたところ、どうも上記以外の手段がなさそうです。

QTBUG-26326 using glew.h with Qt-4.8 in MSVC has broken

Qt公式のバグレポートを見ると、そもそもglewとQtOpenglは共存できないのは仕様のようで、

#ifdef _GLEW_H_
#warning qglfunctions.h is not compatible with GLEW, GLEW defines will be undefined
#warning To use GLEW with Qt, do not include <QtOpenGL> or <QGLFunctions> after glew.h
#endif


ヘッダ内にもこのような警告メッセージが入っているが、VisualStudioが、#warningディレクティブに対応
していないために、警告メッセージが出てこないということのようです。


警告文には

「do not include <QtOpenGL> or <QGLFunctions> after glew.h」

とありますので、では、QGL系のヘッダをglewの前にインクルードしてやればいいのでは?と思い試してみましたが、
そうすると、

「error C1189: #error : gl.h included before glew.h」

コンパイル時にこのようなエラーが出てきます。
要するに、QtOpenGL、glewはどちらを優先しても結局コンパイルできない構造になっているようなので、
やはり、両方の機能をインクルードすることは出来ないようです。


スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

カレンダー
10 | 2017/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
最新記事
カテゴリ
Qt (21)
SDL (2)
MFC (2)
検索フォーム
月別アーカイブ
最新コメント
最新トラックバック
RSSリンクの表示
リンク
リンク(管理用)
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。