虽然在QtCreator构建几个不同的项目,我已经横跨下面的生成错误运行:

collect2: ld returned 1 exit status

只是改变了一些东西(即不应该改变在构建任何显著),它会自行消失,如果它已经出现,或者如果它不存在它就会出现。后

在我的学校项目目前的计划,我试图编译rock03.cpp。这是在构建的唯一文件,并具有main()方法。我刚刚运行成功,回去改变一些if()s的顺序,现在,我只得到两个相关的警告:

overriding commands for target 'rock03.o'

ignoring old commands for target 'rock03.o'

与所讨论的误差沿着。

有没有人知道为什么会发生这种情况?我似乎无法重现错误与任何合理的确定性,并QtCreator不抱怨任何事情,我之前建立

由于

有帮助吗?

解决方案 10

检查“编译输出”窗格显示,pro文件试图同一cpp文件两次链接。

其他提示

如果唯一的错误消息这是一个关于连接器,其原因可能是你的程序仍在运行和连接器不能访问的二进制文件。确保您的应用程序停止,或仍在运行杀死它。 如果以前运行在编译之前停止Qtcreator永远不会检查。

这发生在我身上,因为我做的头文件中的声明,然后删除cpp文件的功能,我忘了删除decleration在头中。例如...

 //header file
class CLASS : public Q_OBJECT
{
...
protected:
void mouseMoveEvent(QMouseEvent*);
}

//source file

void CLASS::mouseMoveEvent(QMouseEvent*e)
{
...
}
    //I'll delete this, then forget to delete "void mouseMoveEvent(QMouseEvent*);" in the header file

在编译器输出是真正有用的,如果你刚开始这是一个错误的时候,但第一个候选人是可能是你仍然有输出程序打开,无法写入文件,因为”我给你这样一个孤独的collect2误差

,也可能发生由于与连杆机构的问题此错误,例如,您忘记使用“的extern”指令声明从头文件一些静态变量。

这发生在你不闭上你的主应用程序(所以输出可执行文件仍在运行,但没有任何可见的窗口)。一个示例:

int main() {
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

此应用程序时,关闭主窗口结束细,但该代码

int main() {
    QApplication a(argc, argv);
    QDialog w;
    w.exec();
    return a.exec();
}

当您关闭对话框(至少我)不关闭应用程序。

一个解决方案是始终创建你的主窗口,并确保您关闭它。

在我的情况下它被声明清楚虚拟功能。

void virtual Func(MouseEvent*); // Error.
void virtual Func(MouseEvent*) = 0; // Well!

在我的情况下,文件夹的权限是问题。 检查“编译输出”窗口是找出究竟是什么问题,是至关重要的。(QtCreator是Visual Studio中在这方面的对面,所以它需要一些时间来适应。)我尝试设置权限正确,但在这之后似乎并没有工作,我到底停用阴影生成,然后我去了“工具/选项/构建与运行/一般/项目目录”,并设置“目录”为“”。然后,它终于编译。 “它” 是Qt中5.11 kmap2qmap项目。

只是我的情况下,任何人2美分,可能会发现它们非常有用。

有可能是错误的许多更多的理由。但是对我来说,从类未使用的插槽中取出问题得到解决。

我有同样的问题。我的分辨率 - 。实施所有虚函数和所有时隙声明

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top