在Linux中未定义对vtable,Qt的引用 [英] Undefined reference to vtable, Qt in Linux

查看:227
本文介绍了在Linux中未定义对vtable,Qt的引用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在Ubuntu 10.04中的Code :: Blocks下编译一个Qt和OpenGL程序。我得到'未定义的引用'vtable for GLWidget'

I was trying to compile a Qt and OpenGL program under Code::Blocks in Ubuntu 10.04. I get the 'undefined reference to 'vtable for GLWidget'

#ifndef _GLWIDGET_H
#define _GLWIDGET_H

#include <QtOpenGL/QGLWidget>
#include "stdlib.h"

class GLWidget : public QGLWidget {

    Q_OBJECT // must include this if you use Qt signals/slots

public:
    GLWidget(QWidget *parent = 0);
    ~GLWidget();
protected:
    void initializeGL();
    void resizeGL(int w, int h);
    void paintGL();
    void keyPressEvent(QKeyEvent *event);
};

#endif  /* _GLWIDGET_H */

家伙看看它是否工作,因为我的工作,因为同样的原因。 代码

I borrowed the code from this guy to see if it works, because mine wasn't working because of the same reason. Code

这里是GLWidget.cpp:

And here is the GLWidget.cpp:

#include <QtGui/QMouseEvent>
#include "glwidget.h"

GLWidget::GLWidget(QWidget *parent) : QGLWidget(parent) {
    setMouseTracking(true);
}

GLWidget::~GLWidget()
{
}

void GLWidget::initializeGL() {
   ...
}

void GLWidget::resizeGL(int w, int h) {
   ...
}

void GLWidget::paintGL() {
    ...
}

void GLWidget::keyPressEvent(QKeyEvent* event) {
    ...
    }
}

我从GL部分删除了代码,如果你需要它,我可以随时发布。

I removed the code from the GL part to keep it shorter. Should you need it, I can always post it up.

#include <QtGui/QApplication>
#include <QtOpenGL/QGLWidget>
#include "glwidget.h"

int main(int argc, char *argv[]) {

    QApplication app(argc, argv);

    GLWidget window;
    window.resize(800,600);
    window.show();

    return app.exec();
}


推荐答案

添加

QT += opengl

所以它知道它必须链接到GL库。

So it knows that it has to link to GL libraries.

这篇关于在Linux中未定义对vtable,Qt的引用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆