lia*_*iaK 12 c++ qt qt4 linker-errors qobject
我在构建应用程序时收到以下链接器错误.
HIMyClass.obj :: error:未解析的外部符号"public:virtual struct QMetaObject const*__thiscall CHIMyClass :: metaObject(void)const"(?metaObject @ CHIMyClass @@ UBEPBUQMetaObject @@ XZ)找不到文件:HIMyClass.obj
HIMyClass.obj :: error:未解析的外部符号"public:virtual void*__thiscall CHIMyClass :: qt_metacast(char const*)"(?qt_metacast @ CHIMyClass @@ UAEPAXPBD @ Z)找不到文件:HIMyClass.obj
HIMyClass.obj :: error:未解析的外部符号"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
....
};
Run Code Online (Sandbox Code Playgroud)
当我评论Q_OBJECT时,链接器错误消失(显然我无法使用信号和插槽).我使用Qt Creator作为IDE和Qt 4.5.3.当我给Rebuild All时,肯定会调用QMake.我想,它产生的moc_*文件就是问题所在.我使用Windows XP和cl作为编译器.
这个链接器错误背后的原因可能是什么?
cha*_*lup 28
此类错误通常意味着您没有将类的标题添加到pro文件中的"HEADERS"变量(元对象编译器仅为此变量中列出的标题生成moc_文件).记得在更改.pro文件后运行qmake!