PS:要转载请注明出处,本人版权所有。
PS: 这个只是基于《我自己》的理解,
如果和你的原则及想法相冲突,请谅解,勿喷。
前置说明
本文发布于 2015-02-09 15:37:25,现用MarkDown+图床做备份更新。blog原图已从CSDN图片服务器下载。(BlogID=012)
环境说明
无
前言
无
问题解决方法
近日编译一个项目时,由于在错误状态下不小心编译一次了.当改了代码后(确认代码正确),在进行编译的时候,就会出现undefined reference to vtable for "xxx::xxx" .
看到这个错误,别慌,他不是一个语言级的错误,而是qt的编译机制引起的.首先,看你的程序中是不是有qt的不同于c++的特性(一般来说就是有没有Q_OBJECT的宏定义).如果没有,就按照标准的C++规则编译,如果有,那么那个部分就会先被生成一个.把标准的.cpp文件(并不替换原来的cpp,而是参与编译).然后在进行标准c++的编译工作.其实就是这个部分引起的错误.而这个部分也叫做元对象编译(MOC).
解决办法:删除build文件夹,切记删除整个文件夹.(这貌似是qt的一个bug,因为我全部重新编译,清除所有文件后在重新编译都是一样的错误)
后记
无
参考文献
无
PS: 请尊重原创,不喜勿喷。
PS: 要转载请注明出处,本人版权所有。
PS: 有问题请留言,看到后我会第一时间回复。