publicdata.obj error: LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl PublicData::metaObject(void)const " (?metaObject@PublicData@@UEBAPEBUQMetaObject@@XZ)
上面的报错的原因是什么?
第一眼,看过去,很熟悉了,元对象的使用嘛,无非没有就两个原因:没有继承 QObject, 没有声明宏Q_OBJECT;
重新编译,还是报错,重新构建就好了。
原因:需要重新编译链接到正确的库。
以下是Chatgpt的回答:
这个错误消息表示您的代码存在未解析的外部符号 metaObject。这可能是由于缺少类定义的元对象导致的。
为了解决此问题,您需要在包含PublicData类的头文件中添加Q_OBJECT宏。这个宏声明了一个类似于元对象的结构以支持信号和槽机制在该类及其子类中的使用。
例如,在PublicData类中,将其声明为:
class PublicData : public QObject
{
Q_OBJECT
//…
};
重新编译您的代码并链接到正确的库,这个问题应该就会得到解决。