我在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/