未解析的外部符号“public: virtual struct QMetaObject const \* __thiscall Parent

新手上路,请多包涵

我从 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)

原文由 sayyed mohsen zahraee 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

您应该删除应用程序的 debug 文件夹并再次运行它以更正此问题。

原文由 sayyed mohsen zahraee 发布,翻译遵循 CC BY-SA 3.0 许可协议

对于 Visual Studio 2022(带有 Qt VS Tools 扩展)

在解决方案资源管理器中,右键单击受影响的头文件并选择属性。

在“Configurations Properties -> General -> Item Type”下选择“Qt Meta-Object Compiler (moc)”选项。然后重建项目。

原文由 Code Gorilla 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题