vsp配合Qt5开发,解决virtual void * __cdecl PopDialogManger::qt_metacast

Qt错误提示

	virtual void * __cdecl PopDialogManger::qt_metacast(char  const*)"(?qt_metacast@PopDialogManger)
	virtual int __cdecl PopDialogManager::qt_metacast(enum QMetaObject::Call, int, void * *)
	virtual struct QMetaObject const * __cdecl PopDialogManager::metaObject(void) const
	static struct QMetaObject const PopDialogManager::staticMetaObject(?staticMetaObject)

原因分析:

想必大家都已经知道了,报错的原因是 对应的头文件没有添加 Q_OBJECT宏,因为使用了信号槽,不添加Q_OBJECT则会出现上面的错误。

但是, 但是,检查代码后,可能已经添加了Q_OBJECT, 再次重新编译,依然还是提示上面的错误。

截图

错误解释

Qt是扩展的c++,qt有一套自己的方式展开Q_OBJECT的头文件。 上面报错的原因,如果你已经添加了Q_OBJECT, 还是报错,极原因可能是: 编译时,头文件没有生成对应的moc文件。

Vs2015+Qt5

我用的是Qt5+Vs2015配合开发出现这样的错误的,当然,我也在 Qt5+Vscode中出现过这样的错误。 特此记录。

VS2015 解决方案:

找到报错的头文件A,** 鼠标右键-> 移除 ->移除**,再重新添加该文件, 重新编译即可。 
posted @ 2021-04-20 21:48  mohist  阅读(319)  评论(0编辑  收藏  举报