ld returned 1 exit status 是链接器 ld 返回的错误代码,表示C++程序链接过程中出现了错误。
这种报错通常是由于以下几种原因导致的:
1. 函数或变量的声明与定义不匹配:在程序中可能存在函数或变量的声明与定义不一致的情况,例如函数的返回类型、参数个数或类型等不匹配。这会导致链接器无法找到匹配的符号,进而报错。
2. 缺少被引用的函数或变量的定义:如果程序中使用了某个函数或变量,但是没有提供其定义,链接器将无法找到对应的实现代码。这时需要检查是否缺少了某个源文件或库文件。
3. 重复定义:如果程序中存在多个相同名称的全局变量或函数定义,链接器将无法确定使用哪一个定义,从而报错。这时可以考虑使用 static 关键字限制其作用域,或者将其定义放在头文件中,并使用 include guards 来避免重复定义。
4. 链接库文件错误:如果程序依赖于某个外部库文件,但是链接器无法找到该库文件或者库文件版本不匹配,就会导致链接失败。这时需要确保正确地指定库文件路径,并使用与库文件匹配的版本。(这是最经常出现的错误)
问题1,2,3都容易自查解决,出现第4种错误则有两种解决方案:
方法1:将代码复制一遍并粘贴到新程序处再运行
方法2:删除程序生成的.exe文件后再次编译运行