w陌上尘 发表于 2023-7-12 13:18:48

带你学C带你飞第一季第二课课后作业

本帖最后由 w陌上尘 于 2023-7-12 17:01 编辑

我想用Windows的cmd运行可以统计代码量的那个count_lines的可执行程序,但是显示出来的是这个:
C:\Users\32759\projects\helloworld>gcc count_lines.c -o count_lines
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../lib/libmingw32.a(lib64_libmingw32_a-crtexewin.o): in function `main':
C:/M/B/src/mingw-w64/mingw-w64-crt/crt/crtexewin.c:70: undefined reference to `WinMain'
collect2.exe: error: ld returned 1 exit status
大佬可以帮我看一下问题出在哪里吗?!我的C语言编译器配置什么的都是完成了的,还有就是我的系统是Win11
或者谁能告诉我怎么操作可以弄出来,求助{:7_131:}
之前忘记把代码弄过来,主要是这个能找到的,就是在论坛里面的那个课后作业里面,《带你学C带你飞(第一季)》S1E2:第一个程序|课后测试题------链接附上:fishc.com.cn/thread-66283-1-1.html

isdkz 发表于 2023-7-12 13:19:57

从你给出的错误信息来看, gcc 试图链接一个含有 WinMain 函数的程序,但是在你的 count_lines.c 文件中找不到这个函数,因此链接失败。

WinMain 函数是Windows应用程序的入口点,而不是控制台程序。控制台程序的入口点应该是 main 函数。也就是说,可能你的 count_lines.c 文件缺少了 main 函数。

请检查你的 count_lines.c 源文件是否包含一个 main 函数,像下面这样:

#include <stdio.h>

int main() {
    // your code here
    return 0;
}


如果你的 count_lines.c 文件包含 main 函数但仍然出现这个问题,你可能需要给 gcc 指定你正在编译的是一个控制台程序。你可以通过添加 -mconsole 标志来完成这个操作:

gcc -mconsole count_lines.c -o count_lines


如果你在尝试上述建议后仍然遇到问题,你可能需要提供更多的上下文信息,例如你的 count_lines.c 文件的内容,以便我能提供更具体的帮助。

歌者文明清理员 发表于 2023-7-12 13:22:50

代码?

liuhongrun2022 发表于 2023-7-12 13:32:46

你的代码呢

歌者文明清理员 发表于 2023-7-12 14:48:30

根据你提供的错误信息,问题出在链接器(ld)无法找到WinMain函数。这个错误通常发生在使用Windows子系统的控制台应用程序中,因为Windows子系统期望程序的入口点为WinMain,而不是标准的main函数。
解决这个问题有两种方法:
方法一:将代码中的main函数改为WinMain函数。这样做会改变程序的入口点,但如果你只是想简单地统计代码行数,这可能不是最理想的选择。
方法二:在代码中添加一个空的WinMain函数,并链接Windows子系统的库。你可以尝试按照以下步骤进行操作:
在代码文件的开头添加如下代码段:
c
Copy Code
#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    return 0;
}
修改编译命令,将-mconsole选项更改为-mwindows,并且添加-luser32选项以链接Windows子系统的库。例如:
bash
Copy Code
gcc count_lines.c -o count_lines -mwindows -luser32
这样修改后,应该可以成功编译并生成可执行文件。请注意,由于你使用的是Windows 11,你可能需要相应的更新了MinGW或MinGW-w64编译工具链,以确保与新操作系统的兼容性。
希望以上信息能够帮助你解决问题。如果还有其他疑问,请随时提出。

歌者文明清理员 发表于 2023-7-12 14:51:21

liuhongrun2022 发表于 2023-7-12 13:32
你的代码呢

gpt脚本写好了

liuhongrun2022 发表于 2023-7-12 14:52:14

歌者文明清理员 发表于 2023-7-12 14:51
gpt脚本写好了

nb{:10_269:}

歌者文明清理员 发表于 2023-7-12 14:53:02

liuhongrun2022 发表于 2023-7-12 14:52
nb

打不过就加入

w陌上尘 发表于 2023-7-12 17:17:10

本帖最后由 w陌上尘 于 2023-7-12 17:21 编辑

歌者文明清理员 发表于 2023-7-12 14:48
根据你提供的错误信息,问题出在链接器(ld)无法找到WinMain函数。这个错误通常发生在使用Windows子系统的控 ...

大佬,我是需要先将代码抄到那个count_lines.c这个文件里面对吧?可以就是先用文本文档(比如说.txt文件)抄过去,然后通过修改文件后缀名的方式让它变成.c的文件对吧?或者只能用一些软件之类的来创建这个count_lines.c的文件呢(比如说用VScode扩展c/c++的插件,然后进行创建这个文件)?

w陌上尘 发表于 2023-7-12 19:42:51

歌者文明清理员 发表于 2023-7-12 14:48
根据你提供的错误信息,问题出在链接器(ld)无法找到WinMain函数。这个错误通常发生在使用Windows子系统的控 ...

大佬,我按照你说的那样去做了,但是还是毛都没有出来一根啊
这次是直接啥都没有了,就是一行空的
能再帮我分析一下问题出在哪里吗?
还有就是,我搞不清楚你给我的那几行代码怎么插进我抄的代码里面去,插在什么位置

歌者文明清理员 发表于 2023-7-12 19:44:38

w陌上尘 发表于 2023-7-12 19:42
大佬,我按照你说的那样去做了,但是还是毛都没有出来一根啊
这次是直接啥都没有了,就是一行空的
能再 ...

w陌上尘 发表于 2023-7-12 19:47:25

歌者文明清理员 发表于 2023-7-12 19:44


{:7_112:}我知道了,谢谢大佬,我之前没有注意到,我已经生成了.exe可执行文件了

w陌上尘 发表于 2023-7-12 19:51:13

歌者文明清理员 发表于 2023-7-12 19:44


我想执行那个count_lines.exe,我直接输入的"count_lines",但是没有任何反应啊,就是一行空的

sfqxx 发表于 2023-7-12 21:00:11

w陌上尘 发表于 2023-7-12 19:51
我想执行那个count_lines.exe,我直接输入的"count_lines",但是没有任何反应啊,就是一行空的

给了最佳就别指望回复了

w陌上尘 发表于 2023-7-12 22:17:10

sfqxx 发表于 2023-7-12 21:00
给了最佳就别指望回复了

啊,这

sfqxx 发表于 2023-7-12 22:18:39

w陌上尘 发表于 2023-7-12 22:17
啊,这

论坛就是这样。
页: [1]
查看完整版本: 带你学C带你飞第一季第二课课后作业