源码如下:

main.cpp

#include <QApplication>
#include <QObject>
#include <QTextCodec>class MyObject:public QObject{Q_OBJECT
public:MyObject(QObject *parent=0):QObject(0){}};int main(int argc, char *argv[])
{QApplication a(argc, argv);return a.exec();
}

当源码是这样的时候,程序是可以运行的,但如果实例化下对象,就有问题了!

源码如下:

#include <QApplication>
#include <QObject>class MyObject:public QObject{Q_OBJECT
public:MyObject(QObject *parent=0):QObject(0){}};int main(int argc, char *argv[])
{QApplication a(argc, argv);MyObject *myObject=new MyObject;return a.exec();
}

报错如下:

造成这样的原因是因为使用了Qt的东西(QObject与Q_OBJECT)而没有翻译成C++认识的源码,也就是moc文件!一般的解决方案是把类放到单独的.h文件,在.cpp文件里面包含下。

原因如下:

.h的内容被插入到.c中,作为.c的内容被编译。.h文件本身不直接参加编译。

.h文件不能单独进行编译,它只能包含在.c/.cpp文件中,或者与其组建一个工程,然后编译.c/.cpp文件。用包含的形式编译的时候,是把.h文件作为.c/.cpp文件的一部分来进行编译。

写过Makefile的朋友应该会知道!

最后源码如下:

myobject.h

#ifndef MYOBJECT_H
#define MYOBJECT_H#include <QObject>class MyObject:public QObject{Q_OBJECT
public:MyObject(QObject *parent=0):QObject(0){}};#endif // MYOBJECT_H

main.cpp

#include <QApplication>
#include "myobject.h"int main(int argc, char *argv[])
{QApplication a(argc, argv);MyObject *myObject=new MyObject;return a.exec();
}

可以正常运行,在Debug文件里面可以看到moc文件

Qt工作笔记-undefined reference to `vtable for MyObject'及对moc文件的进一步理解相关推荐

  1. Qt中关于undefined reference to `vtable for故障总结

    在Qt中,undefined reference to 'vtable for 通常出现在打开了宏 Q_OBJECT的程式当中.我遇到的情况是: 将类体及类体实现直接写到main.cpp里,没有包含 ...

  2. 【Qt】error: undefined reference to `vtable for MainWindow‘

    1.问题描述 在写一个demo时,想尽量简单,就把MainWindow类的定义和实现都写在main.cpp中,结果编译时报错: main.cpp:-1: error: undefined refere ...

  3. Qt工作笔记-保存textEdit中的数据,并自动打开文件

    功能如标题所示. 程序运行如下: 代码如下: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include & ...

  4. C++:undefined reference to vtable 原因与解决办法 [转]

    最近在写一套基础类库用于SG解包blob字段统计,在写完了所有程序编译时遇到一个郁闷无比的错误:  MailBox.o(.text+0x124): In function `CMailBox::CMa ...

  5. 【Qt】报错error: undefined reference to `vtable for的解决方法

    1.问题描述 编译Qt程序时,在某个类构造函数定义处报错: error: undefined reference to `vtable for 2.原因分析 导致错误信息的原因是:子类没有实现父类的纯 ...

  6. 【Qt】undefined reference to `vtable for xxx’

    00. 目录 文章目录 00. 目录 01. 问题描述 02. 问题分析 03. 问题解决 04. 预留 05. 附录 01. 问题描述 编译Qt项目的时候,出现undefined reference ...

  7. Qt下Undefined reference to 'vtable for xxx'

    QT下遇到这种错误提示时候需要注意以下情况: 一.cpp文件里使用了Q_OBJECT 分析:qmake不会处理.cpp文件里的Q_OBJECT,所以如果在.cpp文件中有它的话将会产生undefine ...

  8. QT出现“undefined reference to `vtable for’”解决方法

    Qt 中新建类时,若需要使用信号与槽机制,必须显式启用Q_OBJECT宏.利用QT IDE添加并创建新的类时,在编译过程中会出现以下报错: undefined reference to `vtable ...

  9. undefined reference to `vtable for XX::XX'

    From: http://mylovejsj.blog.163.com/blog/static/386739752009010043162/ 在Qt中会一不小心遇到一个编译错误:"undef ...

最新文章

  1. BZOJ 4059: [Cerc2012]Non-boring sequences ( )
  2. 如果企业网站长时间没有排名可以从多个方面进行分析
  3. JRE System Library、Referenced Libraries、Web App Libraries的含义
  4. java设计模式--单例设计模式
  5. 爬虫教程 python3_Python3网络爬虫(四): 登录
  6. hun 暑期实训之打牌 cin与scanf的输入
  7. 对有父子关系的层级数据项,递归实现绑定到ListControl进行树状列表化的分层输出...
  8. 目录-管壳式换热器的分析与计算
  9. java b2b2c 多商户 电商 源码,整套可运行
  10. 解决可以上QQ,但是无法上网的问题
  11. 2022款联想小新air15和联想小新pro14哪个好
  12. 《Python编程初学者指南》 道森中文版附源代码
  13. LaTex(1):使用在线表格生成器工具生成LaTex表格
  14. python安装方法3.8.2_Python 3.8.2详细图文安装教程(附安装包) | 我爱分享网
  15. Vue生命周期(个人理解)
  16. 迅视财经-备受瞩目新计划 恒大健康
  17. JS--JavaScript数据类型(数值、字符串、布尔值)详解
  18. MIT-BIH使用(四)使用WFDB批量读取MIT-BIH
  19. mysql update select 从查询结果中更新数据
  20. Matlab实现最小二乘法拟合曲线

热门文章

  1. 不懂代码,如何做出实时刷新的数据大屏?
  2. 就会编成新闻稿的飞鸽传书
  3. I-EIM分享一套局域网通讯源码
  4. 在星辰世界的guandan
  5. 飞鸽传书2008一种重要心态
  6. HTML5人喜欢用来调侃自己生活状态的话
  7. 今年第一个项目来说NET的中间语言
  8. 即时通讯软件开发界公认的说法
  9. 这里有最全的C++工程师的技术需求,你要做哪方面的开发?
  10. HTML5 API详解(10):sessionStorage 你用过吗?