2

glew を使用する QGLWidget のサブクラスをコンパイルするのに苦労しています。Windows 7でQt 5.0.1 + MinGW 4.7を実行しています.Glew 1.7.0は上記のMinGWでコンパイルされています。

QGLWidget を UGGLWidget でサブクラス化し、QGLWidget がインクルード"GL/glew.h"する前にインクルードしました。コンパイルすると、次のような 200 エラーが発生します。

  • 「関数」が別の種類のシンボルとして再宣言されました
  • 競合する宣言'typedef'

私の質問: Qt5 でコンパイルされた glew を使用する QGLWidget のサブクラスを取得するにはどうすればよいですか?


編集: 別のセットアップ (Qt4.7 + MinGW4.4) で同じアプローチを試みました。コンパイルして問題なく動作します。また、最新バージョンの glew (Qt5.0.1 + MinGW4.7 + glew1.9.0) を使用してみましたが、どちらもコンパイルされず、同じコンパイル エラーが発生します。


コンパイラ出力の乱雑なスニペットを次に示します。

> In file included from
> ..\..\..\..\..\..\Qt\Qt5.0.1\5.0.1\mingw47_32\include/QtGui/qopengl.h:55:0,
>                  from ..\..\..\..\..\..\Qt\Qt5.0.1\5.0.1\mingw47_32\include\QtOpenGL/qgl.h:47,
>                  from ..\..\..\..\..\..\Qt\Qt5.0.1\5.0.1\mingw47_32\include\QtOpenGL/QGLWidget:1,
>                  from src\UGGLWidget.h:4,
>                  from src\UGGLWidget.cpp:2: ..\..\..\..\..\..\Qt\Qt5.0.1\5.0.1\mingw47_32\include/GLES2/gl2.h:614:153:
> error: 'void __glewVertexAttribPointer(GLuint, GLint, GLenum,
> GLboolean, GLsizei, const GLvoid*)' redeclared as different kind of
> symbol In file included from src\UGGLWidget.cpp:1:0:
> ..\3rdPartyLibs\glew\include/GL/glew.h:13609:46: error: previous
> declaration of 'void (__attribute__((__stdcall__)) *
> __glewVertexAttribPointer)(GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid*)'

最後になりましたが、サブクラスのヘッダーとソース ファイルです。今のところ本当に空いています。

ソース:

//UGGLWidget.cpp
#include "GL/glew.h"
#include "UGGLWidget.h"

UGGLWidget::UGGLWidget(QWidget *parent) : QGLWidget(parent) { ... }

ヘッダ:

//UGGLWidget.h
#ifndef UGGLWIDGET_H
#define UGGLWIDGET_H
#include <QGLWidget>

class UGGLWidget : public QGLWidget
{
    Q_OBJECT
public:
    explicit UGGLWidget(QWidget *parent = 0);
};
#endif // UGGLWIDGET_H

ああ、おそらく .pro ファイルの関連部分

QT       += core gui opengl
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
LIBS += -L$$quote(../3rdPartyLibs/glew/lib/) -lglew32
LIBS += -lopengl32 -lglu32
INCLUDEPATH += $$quote(../3rdPartyLibs/glew/include)
4

2 に答える 2

2

QT 4.8RC リリース ノートには次のように記載されていることに注意してください。

于 2013-04-27T22:09:47.273 に答える