1.环境:vs2013+qt插件
手动从vs里面把moc文件移除了,再重新生成项目,会报一大堆link2001的错误,如下:
***.obj:error LNK2001:无法解析的外部符号"public: virtual struct QMetaObject const* _thiscall....................
出现bug原因如下:手动从vs里面移除moc文件以后,清理工程时,moc文件作为一种临时文件也会被删除,重新生成时,moc文件也会被重新生成,但是却不会主动被加载到vs工程里面来,需要手动将其添加到工程。所以出现上述问题的解决方式是:手动将moc文件添加到工程中。
补充知识:
凡是由Q_OBJECT标识过的class的.h文件,都会由moc生成一个相应的文件moc_xxx.cpp.
有时,moc不能自动生成,解决办法:右键单击要生成moc文件的.h文件,点击属性->自定义生成步骤->常规
在命令行、输出和附加依赖项里面填上相应的内容,然后右键单击这个.h文件,点击“编译”,便可生成对应的moc文件。然后将生成的moc文件需要手动添加到工程里面去,重新编译运行工程文件即可。