【发布时间】: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