QT自定义控件“undefined reference to 'vtable for'”问题
2014-12-05 15:06
197 查看
由于要在控件中绘图,用到自定义控件,在自定义控件中实现绘制图形功能。
在wavewidget.h文件中定义类如下。
一直编译不通过,提示“undefined reference to 'vtable for'”错误,查遍了书籍,没有发现语法错误,去掉“Q_OBJECT”就能编译通过。但是要用到消息和槽机制,不能屏蔽掉它。
通过查看错误信息,认为是.o文件问题,清除*.o文件,重新构建项目,删除debug文件夹等手段,依旧不能解决问题。纠结了很久。
最终查找资料发现,原因是moc没有更新导致,更新*.pro文件,重新qmake一下,顺利解决。
出现此问题的原因是:
预编译器打开宏Q_OBJECT,声明若干个由moc处理(implement)的成员函数。假如得到类似于“undefined reference to vtable for LcdNumber”的编译错误,可能是忘记了执行moc,或忘记了将moc输出加入到link命令里。qmake生成Makefile的时候,这个类的头文档中并没有Q_OBJECT,所以在相应的Makefile里面并没有用moc xxx.h命令,最终导致链接失败.
问题总结:
在QT中,遇到有些不可思议的问题,可以从qmake、*.pro、Makefile中入手,说不定就是这其中某个语句错误引起。
感谢博主的分享,网址如下。
<a target=_blank href="http://blog.chinaunix.net/uid-25749806-id-2942348.html">http://blog.chinaunix.net/uid-25749806-id-2942348.html</a>
感概:
QT的机制还是有问题,出现此类找不到原因的问题,要解决掉还真花时间啊。
在wavewidget.h文件中定义类如下。
class WaveWidget:public QWidget { Q_OBJECT public: WaveWidget(QWidget *parent = 0); WaveWidget(int width = 0,int height = 0,QWidget *parent = 0); protected: void paintEvent(QPaintEvent * e); };
一直编译不通过,提示“undefined reference to 'vtable for'”错误,查遍了书籍,没有发现语法错误,去掉“Q_OBJECT”就能编译通过。但是要用到消息和槽机制,不能屏蔽掉它。
通过查看错误信息,认为是.o文件问题,清除*.o文件,重新构建项目,删除debug文件夹等手段,依旧不能解决问题。纠结了很久。
最终查找资料发现,原因是moc没有更新导致,更新*.pro文件,重新qmake一下,顺利解决。
出现此问题的原因是:
预编译器打开宏Q_OBJECT,声明若干个由moc处理(implement)的成员函数。假如得到类似于“undefined reference to vtable for LcdNumber”的编译错误,可能是忘记了执行moc,或忘记了将moc输出加入到link命令里。qmake生成Makefile的时候,这个类的头文档中并没有Q_OBJECT,所以在相应的Makefile里面并没有用moc xxx.h命令,最终导致链接失败.
问题总结:
在QT中,遇到有些不可思议的问题,可以从qmake、*.pro、Makefile中入手,说不定就是这其中某个语句错误引起。
感谢博主的分享,网址如下。
<a target=_blank href="http://blog.chinaunix.net/uid-25749806-id-2942348.html">http://blog.chinaunix.net/uid-25749806-id-2942348.html</a>
感概:
QT的机制还是有问题,出现此类找不到原因的问题,要解决掉还真花时间啊。
相关文章推荐
- Qt 出现"Undefined reference to 'vtable for'原因总结
- error: undefined reference to 'vtable for android::DongleUsbHost'
- QT 编译的时候出现 undefined reference to `vtable for XXX '
- [C++]Undefined reference to 'vtable for C***'
- QT Error undefined reference to `vtable for MyThread'
- Qt编译错误:undefinedreferenceto`vtable for 。。。。'的解决
- undefined reference to `vtable for MyAgent' 问题
- 【转】Qt经典出错信息之undefined reference to `vtable for classname'
- QT 编译出现 undefined reference to `vtable for xx' 的解决方法
- undefined reference to 'pthread_create'问题解决
- 线程编译问题(undefined reference to `pthread_create')
- (转)undefined reference to 'pthread_create'问题
- 用gcc编译.cpp文件可能出现"undefined reference to `__gxx_personality_v0'"问题的解决
- undefined reference to `sqrt' 问题
- undefined reference to `__ctype_b_loc' 的问题
- 类似undefined reference to 'pthread_create'问题的解决
- undefined reference to 'pthread_create'问题解决
- fedora 15 安装opencv2.2时出现undefined reference to `cvCreateCameraCapture_V4L(int)'问题及其解决方法
- undefined reference to 'pthread_create'问题解决
- [linux proc] undefined reference to `ECPGget_sqlca' 问题解决