鱼C论坛

 找回密码
 立即注册
查看: 1068|回复: 15

[已解决]带你学C带你飞第一季第二课课后作业

[复制链接]
发表于 2023-7-12 13:18:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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
或者谁能告诉我怎么操作可以弄出来,求助
之前忘记把代码弄过来,主要是这个能找到的,就是在论坛里面的那个课后作业里面,《带你学C带你飞(第一季)》S1E2:第一个程序|课后测试题------链接附上:fishc.com.cn/thread-66283-1-1.html
最佳答案
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编译工具链,以确保与新操作系统的兼容性。
希望以上信息能够帮助你解决问题。如果还有其他疑问,请随时提出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 文件的内容,以便我能提供更具体的帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-12 13:22:50 | 显示全部楼层
代码?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-12 13:32:46 | 显示全部楼层
你的代码呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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编译工具链,以确保与新操作系统的兼容性。
希望以上信息能够帮助你解决问题。如果还有其他疑问,请随时提出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-12 14:51:21 | 显示全部楼层

gpt脚本写好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-12 14:52:14 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-12 14:53:02 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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++的插件,然后进行创建这个文件)?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

大佬,我按照你说的那样去做了,但是还是毛都没有出来一根啊
这次是直接啥都没有了,就是一行空的
能再帮我分析一下问题出在哪里吗?
还有就是,我搞不清楚你给我的那几行代码怎么插进我抄的代码里面去,插在什么位置
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

Snipaste_2023-07-12_19-44-26.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-12 19:47:25 | 显示全部楼层

我知道了,谢谢大佬,我之前没有注意到,我已经生成了.exe可执行文件了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-12 19:51:13 | 显示全部楼层

我想执行那个count_lines.exe,我直接输入的"count_lines",但是没有任何反应啊,就是一行空的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

给了最佳就别指望回复了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-12 22:17:10 | 显示全部楼层
sfqxx 发表于 2023-7-12 21:00
给了最佳就别指望回复了

啊,这
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-7-12 22:18:39 | 显示全部楼层

论坛就是这样。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 08:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表