Q_OBJECT链接器错误! [英] Q_OBJECT linker error!

查看:631
本文介绍了Q_OBJECT链接器错误!的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在建立我的应用程式时收到以下连结程式错误。

I am receiving the following linker error when I build my application.


HIMyClass.obj :: error:
unresolved外部符号public:
virtual struct QMetaObject const *
__thiscall CHIMyClass :: metaObject(void)const

(?metaObject @ CHIMyClass @@ UBEPBUQMetaObject @@ XZ)
文件未找到:HIMyClass.obj

HIMyClass.obj:: error: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall CHIMyClass::metaObject(void)const " (?metaObject@CHIMyClass@@UBEPBUQMetaObject@@XZ) File not found : HIMyClass.obj

HIMyClass.obj ::错误:
未解析的外部符号public:
virtual void * __thiscall
CHIMyClass :: qt_metacast(char
const *)
(?qt_metacast @ CHIMyClass @@ UAEPAXPBD @ Z)找不到文件:HIMyClass.obj

HIMyClass.obj:: error: unresolved external symbol "public: virtual void * __thiscall CHIMyClass::qt_metacast(char const *)" (?qt_metacast@CHIMyClass@@UAEPAXPBD@Z) File not found : HIMyClass.obj

HIMyClass.obj :: error:
unresolved external symbolpublic:
virtual int __thiscall
CHIMyClass :: qt_metacall(enum
QMetaObject :: Call,int,void * *)
(?qt_metacall @ CHIMyClass @@ UAEHW4Call @ QMetaObject @@ HPAPAX @ Z)找不到文件:HIMyClass.obj

HIMyClass.obj:: error: unresolved external symbol "public: virtual int __thiscall CHIMyClass::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@CHIMyClass@@UAEHW4Call@QMetaObject@@HPAPAX@Z) File not found : HIMyClass.obj

我的类声明是

class CHIMyClass:public QDialog
{
   Q_OBJECT

   ....

};

当我注释Q_OBJECT链接器错误关闭(,显然我不能使用信号和插槽)。我使用Qt Creator作为IDE和Qt 4.5.3。当我给重建全部时,确定将调用 QMake 。我想,它的moc_ *文件的生成是问题所在。我使用Windows XP和cl作为编译器。

When I comment Q_OBJECT the linker error goes off (and obviously I am not able to use signals and slots). I am using Qt Creator as IDE and Qt 4.5.3. When I give Rebuild All it's definite that QMake will be called. I guess that, its the generation of moc_* files is where the problem lies. I am using Windows XP and cl as the compiler.

这个链接器错误背后的原因是什么?

What might be the reason behind this linker error?

推荐答案

这样的错误通常意味着你没有添加你的类的头到HEADERS变量在pro文件(元对象编译器生成moc_文件只为此变量列出的头)。记住在更改.pro file!

Such errors usually mean that you haven't added the header of your class to "HEADERS" variable in pro file (meta object compiler generates moc_ files only for headers listed in this variable). Remember to run qmake after you change .pro file!

这篇关于Q_OBJECT链接器错误!的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆