本文主要是介绍c++ “public: virtual struct QMetaObject const * 无法解析 已解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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文件。
正确解决办法,检查 cmakelist.txt 文件是否 配置 头文件编译
这篇关于c++ “public: virtual struct QMetaObject const * 无法解析 已解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!