当我构建我的应用程序时,我收到下面的链接程序错误。
错误:未解决的外部符号"public:
struct QMetaObject const * __thiscall CHIMyClass::元对象(无效)const“文件未找到: HIMyClass.obj
HIMyClass.obj::错误:未解决的外部符号"public: virtual * __thiscall CHIMyClass::qt_metacast( const *)“(?qt_metacast@CHIMyClass@@UAEPAXPBD@Z)文件未找到: HIMyClass.obj
错误:未解决的外部符号"public: virtual __thiscall CHIMyClass::qt_metacall(enum::Call,int,void * *)“未找到(?qt_metacall@CHIMyClass@@UAEHW4Call@QMetaObject@@HPAPAX@Z)文件: HIMyClass.obj
我的班级声明就像
class CHIMyClass:public QDialog
{
Q_OBJECT
....
};当我评论Q_OBJECT时,链接器错误就会消失(很明显,我不能使用信号和插槽)。我使用作为IDE和QT4.5.3。当我给重新构建所有时,肯定会调用QMake。我想,moc_*文件的生成是问题所在。我正在使用Windows和cl作为编译器。
链接器错误背后的原因可能是什么?
发布于 2010-07-16 12:31:45
这样的错误通常意味着您还没有将类的头添加到pro文件中的“header”变量中(元对象编译器只为该变量中列出的标题生成moc_文件)。记得在更改.pro文件后运行qmake!
发布于 2011-02-11 08:51:01
我有一个类似的问题,它解决了使用andref的反馈。在中,我简单地说:
qmake
/
发布于 2013-07-03 06:20:55
每当您更改QObject继承时,一定要执行clean,然后是qmake,然后是build。qmake很重要,因为它更新.h文件中任何新的Qt更改(包括QObject继承,即Q_OBJECT )的moc*文件。实际上,在某些情况下,您甚至可以简单地执行qmake然后build来进行增量构建。
https://stackoverflow.com/questions/3264259
复制相似问题