首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >未解析的外部符号"public:虚拟结构QMetaObject const * __thiscall Parent

未解析的外部符号"public:虚拟结构QMetaObject const * __thiscall Parent
EN

Stack Overflow用户
提问于 2013-01-05 18:11:26
回答 17查看 89.5K关注 0票数 80

我从QObject继承了一个类:

代码语言:javascript
复制
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;
    }
};

但当我写道:

代码语言:javascript
复制
Parent ev;

我得到以下错误:

代码语言:javascript
复制
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)
EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2013-01-05 22:35:12

您应该删除应用程序的debug文件夹,然后重新运行它以更正此问题。

票数 81
EN

Stack Overflow用户

发布于 2013-04-10 06:10:59

如果你使用的是Visual Studio,从头文件中删除Q_OBJECT行,保存该文件,将Q_OBJECT放回到头文件中,然后再次保存该文件。这应该会生成moc_*文件,并且应该正确地构建和链接。

票数 64
EN

Stack Overflow用户

发布于 2013-03-27 08:36:45

所以问题是我需要Qt编译器来编译我的.h文件。这对于任何扩展QObject或其子类的类都是必需的。修复涉及到(对我来说)右键单击头文件,选择属性,将项类型设置为"Qt输入“,然后在头文件上点击”编译“,然后将生成的moc_myfilename.cpp文件添加到我的项目中。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14170770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档