Как исправить ошибки компиляции GL.h в QT? - PullRequest
0 голосов
/ 13 апреля 2020

У меня возникла проблема с созданием приложения с моим пользовательским glwidget для OpenGL в QT. GL.h выбрасывает 492 ошибки, начиная со строки 1157 с оператором синтаксической ошибки

: перед 'void' должен стоять знак ';' "(используя windows).

glwidget.h

    #ifndef GLWIDGET_H
    #define GLWIDGET_H

    #include <QOpenGLFunctions>
    #include <QGLWidget>

    class GLWidget : public QGLWidget, protected QOpenGLFunctions
    {
        Q_OBJECT
    public:
        explicit GLWidget(QWidget* parent = 0);

        void initializeGL();
        void paintGL();
        void resizeGL(int w, int h);
    };

    #endif // GLWIDGET_H

glwidget. cpp

    #include "glwidget.h"

    #include <gl/GL.h>
    #include <gl/GLU.h>

    GLWidget::GLWidget(QWidget* parent) : QGLWidget(parent)
    {

    }

    void GLWidget::initializeGL()
    {
        glClearColor(0,0,0,1);
        glEnable(GL_DEPTH_TEST);
        glEnable(GL_LIGHT0);
        glEnable(GL_LIGHTING);
        glEnable(GL_COLOR_MATERIAL);
    }

    void GLWidget::paintGL()
    {
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    }

    void GLWidget::resizeGL(int w, int h)
    {

    }

Каким было бы решение моей проблемы? Также я использую последнюю версию Windows Development Kit и использую QT 5.14.0 (MSV C 2017, 32 bit) на c ++ 11.

Все ошибки начинаются со строки 1157 и впоследствии распространяются на весь остальной код; я вставил раздел code со всеми ошибками, все это в строках WINGDIAPI и typedef, чем я исключил последние пару строк, которые просто ifdef и endif, которые не имеют ошибок.

1 Ответ

1 голос
/ 13 апреля 2020

Положите

#ifdef _WIN32
#include <windows.h>
#endif

прямо перед каждым вхождением #include <GL/gl.h>.

Также не учитывайте случай имен каталогов / файлов. Это прописная буква GL/ и строчная буква gl.h. На Windows это не имеет значения, но если вы компилируете на Linux и FreeBSD, это правильный путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...