关于Qt报出Undefined reference to vtable for xxx的问题

关于Qt报出Undefined reference to vtable for xxx的问题

  前些天无意间遇到这个问题,重新构建还是不行,最后仔细一想就是Qt中的原对象在搞鬼,特此做下笔记。

问题现象

问题描述

  程序之前运行时完好的,当向其中加入Q_OBJECT后会出现如上问题,程序本省没有错误。

解决方法

  关闭工程,删除影子构建目录,重新打开工程,编译即可!

原因分析

  发生这个问题的原因是因为,Qt中最核心的机制—原对象机制,我们平时写的代码在经过原对象编译器编译后生成中间文件moc_xxx.cpp文件,在该文件中记录了Qt中核心的信号和槽机制,这里会进行相应的处理,而关键的地方是,是否包含Q_OBJECT宏,该宏决定了生成中间文件时的格式,所以需要重新编译原对象编译器才能识别。

你可能感兴趣的:(qt,原对象)