天天看點

error: LNK2001: 無法解析的外部符号 “public: virtual struct QMetaObject const * __cdecl

我從QObject繼承了一個類:

#ifndef MAINWINDOWPRIVATE_H
#define MAINWINDOWPRIVATE_H
#include "DockManager.h"
class MainWindowPrivate : public QObject
{
    Q_OBJECT
public:
    MainWindowPrivate();
    virtual ~MainWindowPrivate();
public:
    void initDockWidget(QWidget *widget);
private:
    ads::CDockManager *DockManager;
};
#endif // MAINWINDOWPRIVATE_H      

編譯,出錯,提示:

mainwindowprivate.obj:-1: error: LNK2001: 無法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl MainWindowPrivate::metaObject(void)const " (?metaObject@MainWindowPrivate@@UEBAPEBUQMetaObject@@XZ)

解決辦法:

編譯出錯是因為沒有生成moc_mainwindowprivate.cpp檔案造成的。

如果新添加QObject派生類到您的項目,則必須再次運作qmake,即

1、清理項目(非必須)

2、運作qmake(必須)

3、建構項目(必須)

否則,如果在QObject繼承的類上進行增量建構,那麼您将擁有過時的moc檔案,或者幹脆沒有moc檔案。

繼續閱讀