我从QObject继承了一个类:
class Parent: public QObject
{
Q_OBJECT
QObject* cl;
public:
Parent(QObject *parent=0):QObject(parent) {
cl = NULL;
}
QObject* getCl() const {
return cl;
}
void setCl(QObject *obj) {
cl = obj;
}
};
但当我写道:
Parent ev;
我得到以下错误:
main.obj:-1: error: LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall Parent::metaObject(void)const " (?metaObject@Parent@@UBEPBUQMetaObject@@XZ)
main.obj:-1: error: LNK2001: unresolved external symbol "public: virtual void * __thiscall Parent::qt_metacast(char const *)" (?qt_metacast@Parent@@UAEPAXPBD@Z)
main.obj:-1: error: LNK2001: unresolved external symbol "public: virtual int __thiscall Parent::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@Parent@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
发布于 2013-01-05 22:35:12
您应该删除应用程序的debug
文件夹,然后重新运行它以更正此问题。
发布于 2013-04-10 06:10:59
如果你使用的是Visual Studio,从头文件中删除Q_OBJECT
行,保存该文件,将Q_OBJECT
放回到头文件中,然后再次保存该文件。这应该会生成moc_*
文件,并且应该正确地构建和链接。
发布于 2013-03-27 08:36:45
所以问题是我需要Qt编译器来编译我的.h文件。这对于任何扩展QObject或其子类的类都是必需的。修复涉及到(对我来说)右键单击头文件,选择属性,将项类型设置为"Qt输入“,然后在头文件上点击”编译“,然后将生成的moc_myfilename.cpp文件添加到我的项目中。
https://stackoverflow.com/questions/14170770
复制相似问题