Qt工作笔记-undefined reference to `vtable for MyObject'及对moc文件的进一步理解
源码如下:
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文件的进一步理解相关推荐
- Qt中关于undefined reference to `vtable for故障总结
在Qt中,undefined reference to 'vtable for 通常出现在打开了宏 Q_OBJECT的程式当中.我遇到的情况是: 将类体及类体实现直接写到main.cpp里,没有包含 ...
- 【Qt】error: undefined reference to `vtable for MainWindow‘
1.问题描述 在写一个demo时,想尽量简单,就把MainWindow类的定义和实现都写在main.cpp中,结果编译时报错: main.cpp:-1: error: undefined refere ...
- Qt工作笔记-保存textEdit中的数据,并自动打开文件
功能如标题所示. 程序运行如下: 代码如下: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include & ...
- C++:undefined reference to vtable 原因与解决办法 [转]
最近在写一套基础类库用于SG解包blob字段统计,在写完了所有程序编译时遇到一个郁闷无比的错误: MailBox.o(.text+0x124): In function `CMailBox::CMa ...
- 【Qt】报错error: undefined reference to `vtable for的解决方法
1.问题描述 编译Qt程序时,在某个类构造函数定义处报错: error: undefined reference to `vtable for 2.原因分析 导致错误信息的原因是:子类没有实现父类的纯 ...
- 【Qt】undefined reference to `vtable for xxx’
00. 目录 文章目录 00. 目录 01. 问题描述 02. 问题分析 03. 问题解决 04. 预留 05. 附录 01. 问题描述 编译Qt项目的时候,出现undefined reference ...
- Qt下Undefined reference to 'vtable for xxx'
QT下遇到这种错误提示时候需要注意以下情况: 一.cpp文件里使用了Q_OBJECT 分析:qmake不会处理.cpp文件里的Q_OBJECT,所以如果在.cpp文件中有它的话将会产生undefine ...
- QT出现“undefined reference to `vtable for’”解决方法
Qt 中新建类时,若需要使用信号与槽机制,必须显式启用Q_OBJECT宏.利用QT IDE添加并创建新的类时,在编译过程中会出现以下报错: undefined reference to `vtable ...
- undefined reference to `vtable for XX::XX'
From: http://mylovejsj.blog.163.com/blog/static/386739752009010043162/ 在Qt中会一不小心遇到一个编译错误:"undef ...
最新文章
- BZOJ 4059: [Cerc2012]Non-boring sequences ( )
- 如果企业网站长时间没有排名可以从多个方面进行分析
- JRE System Library、Referenced Libraries、Web App Libraries的含义
- java设计模式--单例设计模式
- 爬虫教程 python3_Python3网络爬虫(四): 登录
- hun 暑期实训之打牌 cin与scanf的输入
- 对有父子关系的层级数据项,递归实现绑定到ListControl进行树状列表化的分层输出...
- 目录-管壳式换热器的分析与计算
- java b2b2c 多商户 电商 源码,整套可运行
- 解决可以上QQ,但是无法上网的问题
- 2022款联想小新air15和联想小新pro14哪个好
- 《Python编程初学者指南》 道森中文版附源代码
- LaTex(1):使用在线表格生成器工具生成LaTex表格
- python安装方法3.8.2_Python 3.8.2详细图文安装教程(附安装包) | 我爱分享网
- Vue生命周期(个人理解)
- 迅视财经-备受瞩目新计划 恒大健康
- JS--JavaScript数据类型(数值、字符串、布尔值)详解
- MIT-BIH使用(四)使用WFDB批量读取MIT-BIH
- mysql update select 从查询结果中更新数据
- Matlab实现最小二乘法拟合曲线