2016-08-26 35 views
1

WindowsのQT CreatorでOpenGL QTプロジェクトをコンパイルする際にエラーが発生しました。QT OpenGLリンクエラー

エラーはリンクエラーです。

私はqmakeを再実行してからクリーンでビルドしてみましたが、これで問題は解決しませんでした。私はまた、私のようなstackoverflowの質問から他の提案のいくつかを試してみましたが、この問題は解決しません。

私は以下のリンクエラーと私のプロジェクトコードを含めます。

ありがとうございます!

リンクエラー:

17:38:04: Running steps for project OpenGL2... 
17:38:04: Configuration unchanged, skipping qmake step. 
17:38:04: Starting: "C:\Qt\Tools\QtCreator\bin\jom.exe" 
    C:\Qt\Tools\QtCreator\bin\jom.exe -f Makefile.Debug 
    C:\Qt\5.6\msvc2013_64\bin\uic.exe ..\mainwindow.ui -o ui_mainwindow.h 
    cl -c -nologo -Zc:wchar_t -FS -Zi -MDd -GR -W3 -w34100 -w34189 -w44996 -EHsc /Fddebug\OpenGL2.pdb -DUNICODE -DWIN32 -DWIN64 -DQT_QML_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I..\..\OpenGL2 -I. -IC:\Qt\5.6\msvc2013_64\include -IC:\Qt\5.6\msvc2013_64\include\QtOpenGL -IC:\Qt\5.6\msvc2013_64\include\QtWidgets -IC:\Qt\5.6\msvc2013_64\include\QtGui -IC:\Qt\5.6\msvc2013_64\include\QtANGLE -IC:\Qt\5.6\msvc2013_64\include\QtCore -Idebug -I. -IC:\Qt\5.6\msvc2013_64\mkspecs\win32-msvc2013 -Fodebug\ @C:\Users\context\AppData\Local\Temp\main.obj.9848.16.jom 
    cl -c -nologo -Zc:wchar_t -FS -Zi -MDd -GR -W3 -w34100 -w34189 -w44996 -EHsc /Fddebug\OpenGL2.pdb -DUNICODE -DWIN32 -DWIN64 -DQT_QML_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I..\..\OpenGL2 -I. -IC:\Qt\5.6\msvc2013_64\include -IC:\Qt\5.6\msvc2013_64\include\QtOpenGL -IC:\Qt\5.6\msvc2013_64\include\QtWidgets -IC:\Qt\5.6\msvc2013_64\include\QtGui -IC:\Qt\5.6\msvc2013_64\include\QtANGLE -IC:\Qt\5.6\msvc2013_64\include\QtCore -Idebug -I. -IC:\Qt\5.6\msvc2013_64\mkspecs\win32-msvc2013 -Fodebug\ @C:\Users\context\AppData\Local\Temp\mainwindow.obj.9848.32.jom 
    C:\Qt\5.6\msvc2013_64\bin\moc.exe -DUNICODE -DWIN32 -DWIN64 -DQT_QML_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -D_MSC_VER=1800 -D_WIN32 -D_WIN64 -IC:/Qt/5.6/msvc2013_64/mkspecs/win32-msvc2013 -IC:/Users/context/Documents/OpenGL2 -IC:/Qt/5.6/msvc2013_64/include -IC:/Qt/5.6/msvc2013_64/include/QtOpenGL -IC:/Qt/5.6/msvc2013_64/include/QtWidgets -IC:/Qt/5.6/msvc2013_64/include/QtGui -IC:/Qt/5.6/msvc2013_64/include/QtANGLE -IC:/Qt/5.6/msvc2013_64/include/QtCore -I. ..\mainwindow.h -o debug\moc_mainwindow.cpp 
main.cpp 
mainwindow.cpp 
..\mainwindow.cpp(3) : warning C4100: 'parent' : unreferenced formal parameter 
..\mainwindow.cpp(28) : warning C4100: 'h' : unreferenced formal parameter 
..\mainwindow.cpp(28) : warning C4100: 'w' : unreferenced formal parameter 
..\mainwindow.cpp(52) : warning C4100: 'event' : unreferenced formal parameter 
..\mainwindow.cpp(57) : warning C4100: 'event' : unreferenced formal parameter 
    cl -c -nologo -Zc:wchar_t -FS -Zi -MDd -GR -W3 -w34100 -w34189 -w44996 -EHsc /Fddebug\OpenGL2.pdb -DUNICODE -DWIN32 -DWIN64 -DQT_QML_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I..\..\OpenGL2 -I. -IC:\Qt\5.6\msvc2013_64\include -IC:\Qt\5.6\msvc2013_64\include\QtOpenGL -IC:\Qt\5.6\msvc2013_64\include\QtWidgets -IC:\Qt\5.6\msvc2013_64\include\QtGui -IC:\Qt\5.6\msvc2013_64\include\QtANGLE -IC:\Qt\5.6\msvc2013_64\include\QtCore -Idebug -I. -IC:\Qt\5.6\msvc2013_64\mkspecs\win32-msvc2013 -Fodebug\ @C:\Users\context\AppData\Local\Temp\moc_mainwindow.obj.9848.718.jom 
moc_mainwindow.cpp 
    link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST:embed /OUT:debug\OpenGL2.exe @C:\Users\context\AppData\Local\Temp\OpenGL2.exe.9848.4400.jom 

**mainwindow.obj : error LNK2019: unresolved external symbol __imp_glBegin referenced in function "protected: virtual void __cdecl MainWindow::paintGL(void)" ([email protected]@@MEAAXXZ) 
mainwindow.obj : error LNK2019: unresolved external symbol __imp_glClear referenced in function "protected: virtual void __cdecl MainWindow::paintGL(void)" ([email protected]@@MEAAXXZ) 
mainwindow.obj : error LNK2019: unresolved external symbol __imp_glClearColor referenced in function "protected: virtual void __cdecl MainWindow::paintGL(void)" ([email protected]@@MEAAXXZ) 
mainwindow.obj : error LNK2019: unresolved external symbol __imp_glEnd referenced in function "protected: virtual void __cdecl MainWindow::paintGL(void)" ([email protected]@@MEAAXXZ) 
mainwindow.obj : error LNK2019: unresolved external symbol __imp_glFlush referenced in function "protected: virtual void __cdecl MainWindow::paintGL(void)" ([email protected]@@MEAAXXZ) 
mainwindow.obj : error LNK2019: unresolved external symbol __imp_glVertex2f referenced in function "protected: virtual void __cdecl MainWindow::paintGL(void)" ([email protected]@@MEAAXXZ) 
debug\OpenGL2.exe : fatal error LNK1120: 6 unresolved externals 
jom: C:\Users\context\Documents\OpenGL2\build\Makefile.Debug [debug\OpenGL2.exe] Error 1120** 
jom: C:\Users\context\Documents\OpenGL2\build\Makefile [debug] Error 2 
17:38:09: The process "C:\Qt\Tools\QtCreator\bin\jom.exe" exited with code 2. 
Error while building/deploying project OpenGL2 (kit: Desktop Qt 5.6.1 MSVC2013 64bit2) 
When executing step "Make" 

ここに私のコードや設定ファイルである:

OpenGL2.pro

QT  += core gui opengl 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = OpenGL2 
TEMPLATE = app 


SOURCES += main.cpp\ 
     mainwindow.cpp 

HEADERS += mainwindow.h 

FORMS += mainwindow.ui 

mainwindow.h

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QOpenGLWindow> 

#include <QSurfaceFormat> 
#include <QOpenGLFunctions> 

#include <QtOpenGL> 
#include <GL/glu.h> 

class MainWindow : public QOpenGLWindow 
{ 
    Q_OBJECT 

public: 
    explicit MainWindow(QWidget *parent = 0); 
    ~MainWindow(); 

protected: 
    virtual void initializeGL(); 
    virtual void resizeGL(int w, int h); 
    virtual void paintGL(); 

    void paintEvent(QPaintEvent *event); 
    void resizeEvent(QResizeEvent *event); 

private: 
    QOpenGLContext* context; 
    QOpenGLFunctions* openGLFunctions; 

}; 

main.cppに

#include "mainwindow.h" 
#include <QApplication> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    MainWindow w; 
    w.setTitle("OpenGL Hello World!"); 
    w.resize(640, 480); 
    w.show(); 

    return a.exec(); 
} 

mainwindow.cpp

#include "mainwindow.h" 

MainWindow::MainWindow(QWidget *parent) 
{ 
    setSurfaceType(QWindow::OpenGLSurface); 

    QSurfaceFormat format; 
    format.setProfile(QSurfaceFormat::CompatibilityProfile); 
    format.setVersion(2, 1); // OpenGL 2.1 
    setFormat(format); 

    context = new QOpenGLContext; 
    context->setFormat(format); 
    context->create(); 
    context->makeCurrent(this); 

    openGLFunctions = context->functions(); 
} 

MainWindow::~MainWindow() 
{ 
} 

void MainWindow::initializeGL() 
{ 
} 

void MainWindow::resizeGL(int w, int h) 
{ 
} 

void MainWindow::paintGL() 
{ 
    // Initialize clear color (cornflower blue) 
    glClearColor(0.39f, 0.58f, 0.93f, 1.f); 

    // Clear color buffer 
    glClear(GL_COLOR_BUFFER_BIT); 

    // Hello World 
    // Render quad 
    glBegin(GL_QUADS); 
     glVertex2f(-0.5f, -0.5f); 
     glVertex2f(0.5f, -0.5f); 
     glVertex2f(0.5f, 0.5f); 
     glVertex2f(-0.5f, 0.5f); 
    glEnd(); 

    glFlush(); 
} 

void MainWindow::paintEvent(QPaintEvent *event) 
{ 
    paintGL(); 
} 

void MainWindow::resizeEvent(QResizeEvent *event) 
{ 
} 
+0

あなたの.proファイルでは、OpenGLライブラリ=> 'LIBS + = -lOpengl32'(または類似のもの)にリンクせずにGL関数を使用しています。 – peppe

答えて

2

ものはOpenGLの機能であり、あなたはOpenGL32.libにリンクする必要があります。これをあなたの.proファイルに追加してください:

LIBS += -lOpenGL32 
+0

ありがとうございます。これは問題を解決しました!それは信じられない、これはQTとオープンGLを学ぶために買った本のサンプルプロジェクトです。実際の本に記載されているqmakeファイルとダウンロードされたqmakeファイルはどちらも間違っています。 – user1836443

関連する問題