我在做一个可视化项目。它应该在QGLViewer上查看3d模型。我有一个QGLViewer的子类定义如下:
class GLViewer : public QGLViewer
{
Q_OBJECT
public:
explicit GLViewer(QWidget *parent = 0,const QGLWidget* shareWidget=0, Qt::WFlags flags=0);
protected:
void initializeGL();
void resizeGL(int width, int height);
void paintGL();
signals:
public slots:
};执行这样的命令:
GLViewer::GLViewer(QWidget *parent, const QGLWidget* shareWidget, Qt::WFlags flags):
QGLViewer(parent,shareWidget,flags)
{
}我收到链接错误:
glviewer.o: In function `GLViewer::GLViewer(QWidget*, QGLWidget const*, QFlags<Qt::WindowType>)':
glviewer.cpp:(.text+0x18): undefined reference to `vtable for GLViewer'
glviewer.cpp:(.text+0x20): undefined reference to `vtable for GLViewer'编辑:这是.pro文件的内容:
QT += core gui opengl xml
TARGET = qglviewer-test
TEMPLATE = app
LIBS += -lqglviewer-qt4 -lGLU -lGLEW
SOURCES += main.cpp\
mainwindow.cpp \
glviewer.cpp
HEADERS += mainwindow.h \
glviewer.cpp表单+= mainwindow.ui
发布于 2012-05-29 01:45:49
你没有通过moc运行glviewer.h。错误就是这么说的。在您的.pro文件中,更改
HEADERS += mainwindow.h \
glviewer.cpp至
HEADERS += mainwindow.h \
glviewer.h <------发布于 2012-04-20 09:57:29
您没有发布GLViewer类的完整实现(只有构造函数),而是获得此错误的原因:
undefined reference to `vtable for GLViewer'您没有实现一些虚拟函数(我假设是initializeGL()、resizeGL(int width, int height)或paintGL())。
发布于 2012-04-20 10:08:14
正如VJovic所说,这种问题通常是由未实现的虚拟函数引起的。我注意到没有GLViewer析构函数的声明/定义。QGLViewer的析构函数是virtual函数吗?如果是这样的话,尝试为GLViewer类提供一个析构函数,这可能会解决您的问题。
https://stackoverflow.com/questions/10243540
复制相似问题