对 vtable 的未定义引用.尝试编译 Qt 项目

Undefined reference to vtable. Trying to compile a Qt project(对 vtable 的未定义引用.尝试编译 Qt 项目)
本文介绍了对 vtable 的未定义引用.尝试编译 Qt 项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我正在使用 Code::Blocks 8.02 和 mingw 5.1.6编译器.编译 Qt 项目时出现此错误:

I'm using Code::Blocks 8.02 and the mingw 5.1.6 compiler. I'm getting this error when I compile my Qt project:

C:Documents and SettingsTheFuzzDesktopGUIApp_interface.cpp|33|未定义参考`地址簿的vtable'

C:Documents and SettingsThe FuzzDesktopGUIApp_interface.cpp|33|undefined reference to `vtable for AddressBook'

文件 AddressBook.h:

File AddressBook.h:

 #ifndef ADDRESSBOOK_H
 #define ADDRESSBOOK_H

 #include <QWidget>

 class QLabel;
 class QLineEdit;
 class QTextEdit;

 class AddressBook : public QWidget
 {
     Q_OBJECT

 public:
     AddressBook(QWidget *parent = 0);

 private:
     QLineEdit *nameLine;
     QTextEdit *addressText;
 };

 #endif

文件 AddressBook.cpp:

File AddressBook.cpp:

#include <QtGui>
#include "addressbook.h"

AddressBook::AddressBook(QWidget *parent)
     : QWidget(parent)
{
    QLabel *nameLabel = new QLabel(tr("Name:"));
    nameLine = new QLineEdit;

    QLabel *addressLabel = new QLabel(tr("Address:"));
    addressText = new QTextEdit;

    QGridLayout *mainLayout = new QGridLayout;
    mainLayout->addWidget(nameLabel, 0, 0);
    mainLayout->addWidget(nameLine, 0, 1);
    mainLayout->addWidget(addressLabel, 1, 0, Qt::AlignTop);
    mainLayout->addWidget(addressText, 1, 1);

    setLayout(mainLayout);
    setWindowTitle(tr("Simple Address Book"));
}

推荐答案

警告:如果您已经有 .pro 文件,请不要这样做 - 您会丢失它!

为了自动保证生成所有的moc cpp文件,可以让qmake自动为你生成.pro文件,不用自己写.

In order to automatically ensure that all moc cpp files are generated, you can get qmake to automatically generate a .pro file for you instead of writing one yourself.

运行

qmake -project

在项目目录中,qmake 将扫描您目录中的所有 C++ 头文件和源文件,以生成 moc cpp 文件.

in the project directory, and qmake will scan your directory for all C++ headers and source files to generate moc cpp files for.

这篇关于对 vtable 的未定义引用.尝试编译 Qt 项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Is it possible to connect a signal to a static slot without a receiver instance?(是否可以在没有接收器实例的情况下将信号连接到静态插槽?)
how to restart my own qt application?(如何重新启动我自己的 qt 应用程序?)
Where in Qt Creator do I pass arguments to a compiler?(在 Qt Creator 中,我在哪里将参数传递给编译器?)
Using a Qt-based DLL in a non-Qt application(在非 Qt 应用程序中使用基于 Qt 的 DLL)
Configuring the GCC compiler switches in Qt, QtCreator, and QMake(在 Qt、QtCreator 和 QMake 中配置 GCC 编译器开关)
Difference between creating object with () or without(使用 () 或不使用 () 创建对象的区别)