我在构建应用程序时收到以下链接器错误。
HIMyClass.obj:: error: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall CHIMyClass::metaObject(void)const" (?metaObject@CHIMyClass@@UBEPBUQMetaObject@@XZ) 找不到文件:HIMyClass.obj
HIMyClass.obj:: error: unresolved external symbol "public: virtual void * __thiscall CHIMyClass::qt_metacast(char const *)" (?qt_metacast@CHIMyClass@@UAEPAXPBD@Z) 找不到文件:HIMyClass.obj
HIMyClass.obj:: 错误:未解析的外部符号“public: virtual int __thiscall CHIMyClass::qt_metacall(enum QMetaObject::Call,int,void * *)” (?qt_metacall@CHIMyClass@@UAEHW4Call@QMetaObject@@HPAPAX@Z)找不到文件:HIMyClass.obj
我的班级声明就像
class CHIMyClass:public QDialog
{
Q_OBJECT
....
};
当我评论 Q_OBJECT 时,链接器错误消失(显然我无法使用信号和插槽)。我使用 Qt Creator 作为 IDE 和 Qt 4.5.3。当我给Rebuild All时,肯定会调用QMake 。我想,它的 moc_* 文件的生成是问题所在。我使用 Windows XP 和 cl 作为编译器。
此链接器错误背后的原因可能是什么?