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

标签 c++ windows qt opengl compiler-errors

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

syntax error: 'void' should be preceded by ';' " (using 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开发工具包,并且正在c++ 11上使用QT 5.14.0(MSVC 2017,32位)。

所有错误均始于第1157行,此后遍及代码的其余部分。我在code部分粘贴了所有错误,所有内容都在WINGDIAPI和typedef的行上,然后我排除了最后两行,即仅ifdef和endif的东西,没有错误。

最佳答案


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

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

也不要以目录/文件名为例。这是一个大写的GL/和一个小写的gl.h。在Windows上没有关系,但是如果您在Linux和FreeBSD上进行编译,那是正确的方法。

关于c++ - 如何修复QT中的GL.h编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61181164/

相关文章:

windows - 使用 wmic 卸载软件包时防止重新启动

C++/QML序列数据交换

c++ - 可变参数模板和覆盖

c++ - std::function 的移动构造函数的异常规范是什么?

c++ - 业务用C++,展示用Objective-C可以吗?

用于删除文件并将其复制到多个目录的 Windows 脚本

C 计算数据点数量 %d\n 与 %lf\n

c++ - 将 SetPixel 坐标转换为控制台上的像素

c++ - Http 帖子不显示内容

python - 将相对图像路径绑定(bind)到 *.py 文件