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

Qt moc错误1-这是什么意思?,qt,qt-creator,Qt,Qt Creator,我试图在Mac OSX上构建一个项目,但它给了我一个神秘的错误: [moc_droparea.cpp]错误1 droparea.cpp显然是项目中的一个文件。我检查了它是否存在于项目目录中,并且没有损坏。文件moc_droparea.cpp在此错误后不会显示在生成文件夹中,因此我假设它由于任何原因无法生成,但错误太模糊,无法帮助我了解发生了什么。有谁能帮我弄明白这意味着什么吗?这个解决方案非常简单。我有一个文件夹结构,在文件路径中放置空格(非法字符)。我用下划线代替空格,效果很好。我认为moc预

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

[moc_droparea.cpp]错误1


droparea.cpp
显然是项目中的一个文件。我检查了它是否存在于项目目录中,并且没有损坏。文件
moc_droparea.cpp
在此错误后不会显示在生成文件夹中,因此我假设它由于任何原因无法生成,但错误太模糊,无法帮助我了解发生了什么。有谁能帮我弄明白这意味着什么吗?

这个解决方案非常简单。我有一个文件夹结构,在文件路径中放置空格(非法字符)。我用下划线代替空格,效果很好。我认为moc预处理器可以处理文件名中的空格,但显然不行。我觉得自己很傻,但至少现在问题解决了


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

这可能是因为我猜有很多原因-我遇到过类似的情况,我忘记删除.qrc文件中不再存在的条目

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

单击“编译输出”,向上滚动并单击红线

在我的例子中,红线是这样写的:不能在专用插槽中定义整数值


在QtCreator窗口的“进度详细信息”部分,有一个名为“编译输出”的按钮(按钮编号4)。错误用红色字体解释。单击它并向上滚动。

由于ressource文件(.qrc)引用了以句点开头的文件名,我出现了相同的错误1。当我从文件名中删除句点时,编译再次起作用。有趣的是,这个错误只发生在使用Clang编译器的MacOSX下。在使用gcc编译器的Windows上,文件名没有引发错误


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

您可以右键单击错误1并选择“查看输出”。在我的例子中,我的qrc文件中有一个错误的文件名。

这可能是因为其他人提到的其他事情很少。我想补充一点,这里没有

如果您创建了一个类并向其中添加了Q_对象,但没有从QObject继承,那么您将得到一个“moc错误1”

如果您查看编译输出,就会看到一行代码:

错误:类包含Q_对象宏,但不从QObject继承


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

在我的例子中,SD卡上的空间不足导致了这种错误。

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

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

因此,这有助于我在使用信号和插槽时更正类声明,从而修复错误:

class Menu : public QObject{
    Q_OBJECT
    ...

你介意发布droparea.h文件吗?它在moc'ed时给出了错误信息。我实际上无法发布任何源代码。不幸的是,这个项目是为了工作。但是,该.h文件与QT creator附带的Drop Area示例中的文件几乎相同。另外注意:在尝试将Q_对象与模板类一起使用时,也可能发生此错误。如何在模板类中使用信号/插槽功能,如中所述:我以前遇到过这个问题。你能接受你自己的答案吗?我认为这应该是一个评论,而不是一个回答。但我不允许发表评论(分数太低)。但是,这也是一个评论。我欢迎我的升级。