【问题标题】:How do I fix GL.h Compiling Errors in QT?如何修复 QT 中的 GL.h 编译错误?
【发布时间】:2020-07-25 14:45:44
【问题描述】:

在 QT 中使用自定义 glwidget 为 OpenGL 构建应用程序时遇到问题。 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 开发工具包,并且我在 c++11 上使用 QT 5.14.0(MSVC 2017,32 位)。

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

【问题讨论】:

  • 请逐字显示完整的错误消息并显示/标记导致问题的代码行。另请注意,QGLWidget 已过时 - 您应该改用 QOpenGLWidget
  • 这是第一条错误消息的全部内容(它不包括的只是最新 ​​Windows 开发工具包的 GL.h 目录),感谢QGLWidget 已过时的提醒.
  • 即使在我重新编码我的 glwidget 以使用 QOpenGLWidget 后,运行构建过程时控制台中仍然会出现 GL.h 代码错误。
  • 我还添加了导致 GL.h 错误的所有代码
  • 请在您的问题中通过链接将相关代码显示为文本(另请注意,链接中的代码似乎不完整)。

标签: c++ windows qt opengl compiler-errors


【解决方案1】:

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

就在每次出现#include &lt;GL/gl.h&gt;之前。

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

【讨论】:

  • 太棒了,非常感谢,现在它触发了我的初始化和绘制事件,idk 关于调整大小,因为 QOpenGLFunctions 抛出了一个错误,但这是另一个问题,我会 +1,但它不会显示,因为我的声望不够。
猜你喜欢
  • 1970-01-01
  • 2010-09-30
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
相关资源
最近更新 更多