Qt 5.1.0でopenglを使用する際に重大な問題があります。私のコンパイラはMinGW 32ビットで、私はWindows 10 64ビットを使用します。 OpenGLウィジェットを含むメインウィンドウを作成しようとしています。このOpenGLウィジェットでは、三角形を描画しようとしています。Qtプロジェクトのglewメソッドへの未定義の参照
私はglew1.9.0をダウンロードしました(glew-2.0.0ダウンロードで空のlibフォルダが得られたため)。私は静的ライブラリglew32s.lib
(動的ではありません.dll
)を含んでいます。私は#define GLEW_STATIC
と#include <gl/glew.h>
を追加しました。私はまた、libパスと、私の.pro
ファイルのincludeパスとリンクするライブラリに関する情報を追加しました。
しかし、私はglew.h
に含まれるすべての機能について未定義のリファレンスを取得しています。実際に私は気づいていますが、 glGenBuffers()
、__glewGenBuffers()
のメッセージが表示されます。内部にgl.glew.h
、私はその行を見つけました。glGenBuffers is defined, calls
__glewGenBuffers`はまだ定義されていません。
1685 #define glGenBuffers GLEW_GET_FUN(__glewGenBuffers)
14376 GLEW_FUN_EXPORT PFNGLGENBUFFERSPROC __glewGenBuffers;
ので、問題は__glewGenBuffers
と呼ばれるが、glew.h
ではまだ定義されていないということだろうか?私はここで嫌な思いをしていますか?私は今2日間しようとしている、私はすべての同様の投稿に投稿してみましたが、私は解決策を見つけることができません。ここ
コードの小さいが代表的な部分である:
glwidget.cpp:
#define GLEW_STATIC
#include <gl/glew.h>
#include "glwidget.h"
GLWidget::GLWidget(QWidget *parent) :
QGLWidget(parent)
{
}
extern "C" void GLWidget::initializeGL()
{
glewInit();
glClearColor(0, 1, 0, 1);
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHTING);
glEnable(GL_COLOR_MATERIAL);
GLfloat verts[] =
{
+0.0f, +1.0f,
-1.0f, -1.0f,
+1.0f, -1.0f,
};
GLuint myBufferID;
glGenBuffers(1, &myBufferID);
glBindBuffer(GL_ARRAY_BUFFER, myBufferID);
glBufferData(GL_ARRAY_BUFFER, sizeof(verts), verts, GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0);
}
void GLWidget::resizeGL(int w, int h)
{
}
void GLWidget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glDrawArrays(GL_TRIANGLES, 0, 3);
}
.PROファイル:
QT += core gui opengl
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = New_Beam
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp \
glwidget.cpp
HEADERS += mainwindow.h \
glwidget.h \
../../../../../Qt/Qt5.3.2/glew-1.9.0/include/GL/glew.h
FORMS += mainwindow.ui
win32: LIBS += -L"C:/Qt/Qt5.3.2/glew-1.9.0/lib" -lglew32s -lopengl32
INCLUDEPATH += C:/Qt/Qt5.3.2/glew-1.9.0/include
DEPENDPATH += C:/Qt/Qt5.3.2/glew-1.9.0/include
メッセージは次のとおり
'__glewGenBuffers'への未定義の参照
私が使用したすべてのglew関数と同じです。 答えは歓迎です。
ありがとう、このコードはうまくいきます、本当にありがとうございます。 –