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,** 鼠标右键-> 移除 ->移除**,再重新添加该文件, 重新编译即可。