繁体   English   中英

如何修复 QT 中的 GL.h 编译错误?

[英]How do I fix GL.h Compiling Errors in QT?

我在使用 QT 中的 OpenGL 的自定义glwidget构建应用程序时遇到问题。 GL.h从第 1157 行开始抛出 492 错误,语句为

语法错误:'void' 应该以 ';' 开头 "(使用窗口)。

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 开发套件,并且我在 Z069391E2E9CB6BBF8982CE15D386813 上使用 QT 5.14.0(MSVC 2017,32 位)。

所有错误都从第 1157 行开始,然后贯穿代码的 rest; 我已经粘贴了包含所有错误的代码部分,它们都在 WINGDIAPI 和 typedef 行上,而不是我排除了最后几行,它们只是没有错误的 ifdef 和 endif 内容。

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

就在每次出现#include <GL/gl.h>之前。

也不要考虑目录/文件名的情况。 它是大写的GL/和小写的gl.h 在 Windows 上没关系,但如果你在 Linux 和 FreeBSD 上编译,这是正确的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM