无法解析的外部符号:qt_metacall metaObject(void) const qt_metacast

背景:在原有的项目上添加新的类,添加Q_OBJECT后报错。

问题原因:VS在第一次编译后,之后就不会再调用MOC命令。也就是再添加的类中有信号与槽机制时(加Q_OBJECT),是不会调用MOC,将新的类转化为标准C++兼容形式,就会报错。

解决方法:

1.找到当前用的Qt版本,进入到moc.exe所在文件夹下面。cmd到当前目录

2.按照下图格式将头文件转化为moc文件

 3.将生成的moc_XX.cpp文件放到GeneratedFilesDebug的目录下。再在VS界面中添加moc文件。

4.重新编译运行。

附:moc的作用:

原文地址:https://www.cnblogs.com/algs/p/13272511.html