Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Lled от Декабрь 23, 2015, 14:57



Название: OpenGL undefined reference to `_imp__glClearColor@16'
Отправлено: Lled от Декабрь 23, 2015, 14:57
Здравствуйте. Хочу в Qt Creator повторить примеры по OpenGL, но почему-то на все функции OpenGL идут ошибки. Как исправить? Например, вот содержимое файлов проекта:
opengl003.pro
Код:
QT       += core gui opengl

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = opengl003
TEMPLATE = app


SOURCES += main.cpp \
    mainscene.cpp

HEADERS  += \
    mainscene.h

mainscene.h
Код:
#ifndef MAINSCENE_H
#define MAINSCENE_H

#include <QGLWidget>

class MainScene : public QGLWidget
{
protected:
    void initializeGL();
    void resizeGL(int w, int h);
    void paintGL();
public:
    MainScene(QWidget* parent = 0);
};

#endif // MAINSCENE_H

mainscene.cpp
Код:
#include "mainscene.h"

MainScene::MainScene(QWidget* parent) : QGLWidget(parent)
{
}

void MainScene::initializeGL()
{
    glClearColor(1.0, 1.0, 1.0, 1.0);
}

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

void MainScene::paintGL()
{
}

main.cpp
Код:
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    return a.exec();
}

Ошибка:
Цитировать
C:\Users\sa\Documents\Progs\build-opengl003-Desktop_Qt_5_5_1_MinGW_32bit-Debug/../opengl003/mainscene.cpp:9: undefined reference to `_imp__glClearColor@16'


Название: Re: OpenGL undefined reference to `_imp__glClearColor@16'
Отправлено: __Heaven__ от Декабрь 23, 2015, 15:00
У меня такое обычно вылетает, когда в Qt нет соответствующей поддержки opengl.
Пересоберите с -opengl=desktop или скачайте готовое решение


Название: Re: OpenGL undefined reference to `_imp__glClearColor@16'
Отправлено: Racheengel от Декабрь 23, 2015, 15:45
добавьте LIBS += -lglu32 -lopengl32


Название: Re: OpenGL undefined reference to `_imp__glClearColor@16'
Отправлено: Lled от Декабрь 23, 2015, 15:47
Спасибо. Но проблема решилась как-то по другому  ???. Нашел http://stackoverflow.com/questions/31633401/qt-5-5-0-cannot-find-opengl-functions (http://stackoverflow.com/questions/31633401/qt-5-5-0-cannot-find-opengl-functions). В файл opengl003.pro добавил LIBS += -lopengl32.
Код:
QT       += core gui opengl

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = opengl003
TEMPLATE = app

LIBS += -lopengl32

SOURCES += main.cpp \
    mainscene.cpp

HEADERS  += \
    mainscene.h
Теперь ошибки нет. А что я добавил? Почему пришлось подключать еще какую-то библиотеку?


Название: Re: OpenGL undefined reference to `_imp__glClearColor@16'
Отправлено: Racheengel от Декабрь 23, 2015, 16:10
Это базовая библиотека OpenGl, Qt ее только использует, а базовые функции содержатся в opengl32.lib.


Название: Re: OpenGL undefined reference to `_imp__glClearColor@16'
Отправлено: Lled от Декабрь 23, 2015, 16:38
Спасибо.