我在OSX Lion中运行QtCreator,并且每次创建需要Q_OBJECT宏的类时,在尝试构建应用程序时都会出错。该类的代码如下,我收到的错误也是如此。任何线索可能是怎么回事?
注意:我已经尝试清理,运行qmake并重新构建无济于事。
#ifndef TASKLIST_H
#define TASKLIST_H
#include <QObject>
class TaskList : public QObject
{
Q_OBJECT
public:
explicit TaskList(QObject *parent = 0 );
public slots:
void addTask();
void displayTasks();
};
#endif // TASKLIST_H
Run Code Online (Sandbox Code Playgroud)
错误:
:-1:错误:架构x86_64找不到符号
:-1:错误:collect2:ld返回1退出状态
Qt Creator中似乎仍然存在一个错误。
我有一个大型项目,其中许多类都具有Q_OBJECT,而另一些类中没有Q_OBJECT。工作正常。但是,如果我将Q_OBJECT添加到其中一个没有的类中,则在尝试构建它时会出现此“ collect2:ld返回1退出状态”错误。
检查构建目录,我发现缺少此类的moc文件。Qt只是不为其创建moc文件!但是,如果我从项目中删除了头文件和cpp文件,然后再次添加它们,则可以正常工作,将生成moc文件,并且可以成功构建项目。
仅当我有一个没有Q_OBJECT并且在过去成功构建的类时,才会出现此问题。在添加“ Q_OBJECT”之前从未编译过的带有Q_OBJECT的新类始终可以正常工作。
因此,如果发生此问题并且您确定自己正确地包含了所有内容(并注释掉Q_OBJECT可以正确构建项目),请执行以下操作:
编辑
在某些情况下,先运行qmake(Build / Run qmake),然后再运行a Clean All就足够了。