« MinGW + Qt5 + Cygwin | トップページ | ライセンスの確認をしてみる »

2014年3月18日 (火)

MemoryBarrierとはなんぞや

最初にQtで開発を始めた時に、ハマったので書いておこうと思ったのですが、今の環境で試すとエラーになりません。だったら、書かなくてもいいかと思ったのですが、ちょっとだけ書いておきます。

ビルド時に以下のようなエラーが出るというものです。

C:\Qt\Qt5.1.1\5.1.1\mingw48_32\include\QtGui\qopenglversionfunctions.h:785: error: expected unqualified-id before ')' token
void (QOPENGLF_APIENTRYP MemoryBarrier)(GLbitfield barriers);

「MemoryBarrier」ってなんだ?ということなんですが、いろいろgoogleさんで調べた結果以下のページが引っかかりました。(日本語のページは見つけられなかったです)

http://stackoverflow.com/questions/18739688/compile-time-error-from-a-qt-file-expected-unqualified-id-before-token

つまるところMinGWのバグってことらしいです。

http://sourceforge.net/p/mingw/bugs/2024/

以下をインクルードすることで対策できます…が。

// -*- mode: cc-mode; coding: utf-8-unix -*-
// last updated : 2014/03/18
#ifndef COMMON_H
#define COMMON_H

// for Qt 5.2.1 with MinGW 4.8.1
// http://stackoverflow.com/questions/18739688/compile-time-error-from-a-qt-file-expected-unqualified-id-before-token
// http://sourceforge.net/p/mingw/bugs/2024/
// Windows always needs this to ensure that APIENTRY gets defined
#if defined(Q_OS_WIN)
# include
# undef MemoryBarrier
#endif

#endif /* COMMON_H */

MinGWを最新にしたら、この対策は要らないということになりました…ソースファイルをアップデートしなければ…

« MinGW + Qt5 + Cygwin | トップページ | ライセンスの確認をしてみる »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: MemoryBarrierとはなんぞや:

« MinGW + Qt5 + Cygwin | トップページ | ライセンスの確認をしてみる »