Qt moc错误1 - 这是什么意思?

时间:2010-08-25 18:46:48

标签: qt qt-creator

我正在尝试在Mac OSX上构建一个项目,它给了我一个神秘的错误:

  

[moc_droparea.cpp]错误1

droparea.cpp(显然)是项目中的一个文件。我检查它是否存在于项目目录中并且没有损坏。在此错误之后文件moc_droparea.cpp没有显示在构建文件夹中,因此我假设它无法以任何原因构建,但错误太模糊,无法帮助我弄清楚发生了什么。任何人都可以帮我弄清楚这意味着什么吗?

8 个答案:

答案 0 :(得分:5)

解决方案非常简单。我有一个文件夹结构,在文件路径中放置空格(非法字符)。我把下划线而不是空格,它建立得很好。我认为moc预处理器可以处理文件名中的空格,但显然不是。我觉得很愚蠢,但至少问题现在已经解决了。

希望这个解决方案可以帮助其他人。

答案 1 :(得分:5)

单击"编译输出",向上滚动并单击红线。

在我的情况下,红线说:您无法在私人广告位中定义整数值。

在qt创建者窗口下,在"进度细节"部分,有一个名为"编译输出"的按钮。 (按钮编号4)。用红色字体解释错误。单击它并向上滚动。

答案 2 :(得分:1)

这可能是因为我想的很多事情 - 我有类似的情况,我忘了删除.qrc文件中不再存在的条目。

因此,请检查您的资源路径。

答案 3 :(得分:1)

您可以右键单击错误1,然后选择“查看输出”。就我而言,我的qrc文件中的文件名错误。

答案 4 :(得分:1)

这可能是因为其他人没有提到过其他事情。我想添加另一个在这里不见的东西。

如果您创建一个类并向其中添加Q_OBJECT,但不继承自QObject,则会收到“ moc错误1”。

如果您查看Compile Output,则会显示一行:

  

错误:类包含Q_OBJECT宏,但不继承自QObject

因此,解决此问题的一般方法只是查看“编译输出”窗口。

答案 5 :(得分:0)

同样的错误1由于资源文件(.qrc)而发生在我身上,该文件引用以句点开头的文件名。当我从文件名中删除句点时,编译再次起作用。有趣的是,该错误仅在使用Clang编译器的Mac OSX下发生。在使用gcc编译器的Windows上,文件名不会引发错误。

通常,“[源文件名]错误1”消息通常意味着由于文件路径中的意外字符而无法找到文件。

答案 6 :(得分:0)

对于我来说,我的SD卡空间不足,导致了这种错误。

答案 7 :(得分:0)

就像 J.Javan 已经指出的那样,检查编译器输出可能会有所帮助。就我而言,我发现:

<块引用>

../stateMaschine/usermenu.h:57:错误:缺少类声明 Q_OBJECT 宏。 make: *** [Makefile:215: moc_usermenu.cpp] 错误 1

所以这帮助我通过在使用信号和槽时更正类声明来修复错误:

class Menu : public QObject{
    Q_OBJECT
    ...