C++ VS2013中的MOC文件生成
我有一个从.pro文件生成的项目。我无法编译它,因为没有生成MOC文件C++ VS2013中的MOC文件生成,c++,qt,visual-studio-2013,compiler-errors,moc,C++,Qt,Visual Studio 2013,Compiler Errors,Moc,我有一个从.pro文件生成的项目。我无法编译它,因为没有生成MOC文件 Q_对象用于要MOCed的类的标题中 #pragma once用于要MOCed的类的标题中 我将详细内容放到detailed中,我可以看到在正确的类上调用了moc。然后,出现以下错误:标准输入(0):注意:未找到相关类。没有生成输出。 最后,编译器无法链接moc文件,生成失败: 8> moc_myClass.cpp 8>c1xx : fatal error C1083: Cannot open source
用于要MOCed的类的标题中Q_对象
用于要MOCed的类的标题中#pragma once
标准输入(0):注意:未找到相关类。没有生成输出。
最后,编译器无法链接moc文件,生成失败:
8> moc_myClass.cpp
8>c1xx : fatal error C1083: Cannot open source file:
'D:\Things\\L_build\Stuff\moc\moc_myClass.cpp': No such file or directory
有什么线索吗?我通过以下两个步骤解决问题: 1.删除Q_对象并重新生成
2.添加Q_对象并再次重建我通过以下两个步骤解决问题: 1.删除Q_对象并重新生成
2.添加Q_对象并再次重建头文件中是否有任何“非常规”预处理器命令,Q_对象宏是否位于正确位置?(与一些示例文件相比)这些类最终是否派生自
QObject
?从QObject
派生的至少一个类中是否存在Q\u对象
宏?moc必须满足这两个条件才能产生输出。这个问题现在有点离题了,因为没有显示重现这个问题的代码。“Q_对象用于要MOCed的类的头中”它应该用于从QObject
派生的每个类的声明内部,而不仅仅是头中的某个地方Q_对象
扩展到staticMetaObject
成员声明。因此,它只在类声明内部有意义,否则将被moc忽略。Q_对象宏不是问题所在。我有一个非常类似的项目,它编译得很好,具有相同的Q_对象定义。我无法找出导致编译失败的两个项目之间的区别头文件中是否有任何“非常规”预处理器命令,Q_OBJECT宏是否位于正确的位置?(与一些示例文件相比)这些类最终是否派生自QObject
?从QObject
派生的至少一个类中是否存在Q\u对象
宏?moc必须满足这两个条件才能产生输出。这个问题现在有点离题了,因为没有显示重现这个问题的代码。“Q_对象用于要MOCed的类的头中”它应该用于从QObject
派生的每个类的声明内部,而不仅仅是头中的某个地方Q_对象
扩展到staticMetaObject
成员声明。因此,它只在类声明内部有意义,否则将被moc忽略。Q_对象宏不是问题所在。我有一个非常类似的项目,它编译得很好,具有相同的Q_对象定义。我无法找出两个项目之间的差异,这导致编译失败,以供将来参考:可能还需要删除Visual Studio中“生成的文件”下的moc_XYZ
文件,然后清理并重建。对于将来的参考:可能还需要删除“生成的文件”下的moc_XYZ
文件在Visual Studio中,然后清理并重建。