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