QtCreator建立回报collect2:LD返回退出状态1
-
18-09-2019 - |
题
虽然在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美分,可能会发现它们非常有用。
有可能是错误的许多更多的理由。但是对我来说,从类未使用的插槽中取出问题得到解决。
我有同样的问题。我的分辨率 - 。实施所有虚函数和所有时隙声明