QT 无法解释外部符号 “QMetaObject ”错误
stackoverflow
QT自定义的QObject编译错误:
main.obj? error: LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall Parent::metaObject(void)const " (?metaObject@Parent@@UBEPBUQMetaObject@@XZ)
main.obj? error: LNK2001: unresolved external symbol “public: virtual void * __thiscall Parent::qt_metacast(char const *)” (?qt_metacast@Parent@@UAEPAXPBD@Z)
main.obj? error: LNK2001: unresolved external symbol “public: virtual int __thiscall Parent::qt_metacall(enum QMetaObject::Call,int,void * *)” (?qt_metacall@Parent@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
解决办法: 注释掉类以及子类的所有Q_OBJECT,重新编译,然后解除注释,再编译
如果上述方法不行,可能是因为类的声明和实现放在同一个.h文件或者别的类的.cpp文件里了,尝试将这部分代码单独放到一对.h、.cpp文件里,删除GeneratedFiles、release、debug三个文件夹里的内容,重新编译