【发布时间】:2011-03-16 21:48:49
【问题描述】:
我在构建应用程序时收到以下链接器错误。
HIMyClass.obj:: 错误: 未解析的外部符号“公共: 虚拟结构 QMetaObject 常量 * __thiscall CHIMyClass::metaObject(void)const " (?metaObject@CHIMyClass@@UBEPBUQMetaObject@@XZ) 找不到文件:HIMyClass.obj
HIMyClass.obj:: 错误: 未解析的外部符号“公共: 虚空 * __thiscall CHIMyClass::qt_metacast(char 常量 *)" (?qt_metacast@CHIMyClass@@UAEPAXPBD@Z) 找不到文件:HIMyClass.obj
HIMyClass.obj:: 错误: 未解析的外部符号“公共: 虚拟 int __thiscall CHIMyClass::qt_metacall(枚举 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 作为编译器。
此链接器错误背后的原因可能是什么?
【问题讨论】:
-
也许
File not found : HIMyClass.obj告诉我们,Qt Creator 没有看到 moc/obj/temp 文件? -
真的,重新运行 qmake。此外,请检查 .pro 文件中是否缺少或多余的“\”字符。
标签: c++ qt qt4 linker-errors qobject