C 代码::阻止错误:ld返回1个退出状态

C 代码::阻止错误:ld返回1个退出状态,c,linker,codeblocks,linker-errors,ld,C,Linker,Codeblocks,Linker Errors,Ld,我正在使用代码::Blocks v 16.1.0.0以及它附带的MINGW。链接器有问题。我无法使用#include“sth”将单个头文件/源文件链接到源文件。为了缩小问题的范围,我的项目中只有一个源文件和一个头文件,但无论我使用什么文件和尝试什么选项,我都无法绕过此错误 这是构建日志 -------------- Build: Debug in MISC (compiler: GNU GCC Compiler)--------------- gcc.exe -Wall -Wextra -Wa

我正在使用代码::Blocks v 16.1.0.0以及它附带的MINGW。链接器有问题。我无法使用
#include“sth”
将单个头文件/源文件链接到源文件。为了缩小问题的范围,我的项目中只有一个源文件和一个头文件,但无论我使用什么文件和尝试什么选项,我都无法绕过此错误

这是构建日志

-------------- Build: Debug in MISC (compiler: GNU GCC Compiler)---------------

gcc.exe -Wall -Wextra -Wall -g -std=c99  -c C:\Users\username\Documents\CodeBlocks\C\MISC\readFileByChars.c -o obj\Debug\readFileByChars.o
g++.exe -LC:\Users\username\Documents\CodeBlocks\C\MISC -o bin\Debug\MISC.exe obj\Debug\readFileByChars.o readFileByChars.h.gch   
readFileByChars.h.gch: file not recognized: File format not recognized
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
1 error(s), 0 warning(s) (0 minute(s), 0 second(s))
这是工具链目录:

我以前没有运行任何程序的实例。我也有独立的工作MINGW(在环境变量中不包括其bin文件夹,以免在构建过程中混淆代码块),但对于代码块,我包括安装时附带的预打包的代码块。当我单击链接项目中头文件的选项时,项目将不会生成(但是如果我不链接文件,如何生成我的应用程序?)。我重复这个项目是空的,我只有一个头,只有一个源文件包括在内。我在这里看到了其他类似的问题,但他们的解决方案不起作用。我们将不胜感激。多谢各位

链接器有问题。我无法使用#include“sth”将单个头文件/源文件链接到源文件

链接器没有问题。不能链接头文件或源文件。您只能编译源代码 生成目标文件的文件(可能包括头文件)

包含的头文件可以是, 对于支持此概念的编译器,遵循编译器特定的限制 在使用时(尽管名称不同,预编译头文件不会被编译:它不会被编译) 对象文件)

链接器只能链接对象文件和动态库以生成可执行文件。 它可以直接使用对象文件,也可以从静态库中提取对象文件

失败的链接命令:

g++.exe -LC:\Users\username\Documents\CodeBlocks\C\MISC -o bin\Debug\MISC.exe obj\Debug\readFileByChars.o readFileByChars.h.gch
显示您正试图链接预编译头
readFileByChars.h.gch
。链接器说:

readFileByChars.h.gch: file not recognized: File format not recognized
因为预编译头不是对象文件或静态或动态文件 图书馆。这不是链接器理解的东西

更正项目选项,使您不再通过
readFileByChars.h.gch
作为链接器输入

想必你已经通过了考试 在code::Blocks项目中生成预编译头
readFileByChars.h.gch
。 如果您正确地遵循了该文档,则无需执行任何其他操作即可完成该文档 没有提到。您的其他项目选项不需要告诉编译器或链接器任何事情 关于预编译头

根本不需要使用预编译头,正如您所看到的,它们的 正确使用不是万无一失的,而是特定于编译器的。我会的 建议您以普通方式构建此项目和其他项目,无需预编译头, 除非您面临着漫长的编译时间,否则
预编译的头文件可能会有效地缩短时间。

我是如何解决这个问题的: 1.如果从项目中运行文件,请先退出代码块。
2.单独打开文件(不要打开代码块项目文件!)并运行

真正的答案:1。打开任务管理器(ctrl+shift+esc)
2.转到详细信息
3.搜索项目名称和结束任务(将有一个带有项目名称的.exe)
完成了

在工作区中

  • 右键单击包含主方法的文件->选项->(选中)同时启用这两种方法

  • 仅适用于其他*.c文件(检查)编译

  • 对于*.h文件(选中)禁用这两个选项

  • 构建和运行