Visual studio code 无法编译
本帖最后由 engine0 于 2026-8-23 18:02 编辑Visual studio code 中编译
#include <stdio.h>
int main(void)
{
printf("Hello, C!\n");
return 0;
}
就会出现以下错误:
PS C:\C\Test> cd "c:\C\Test\" ; if ($?) { gcc test.c -o test } ; if ($?) { .\test }
C:/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.1.0/../../../../lib/libmingw32.a(lib64_libmingw32_a-crtexewin.o): in function `main':
D:/W/B/src/mingw-w64/mingw-w64-crt/crt/crtexewin.c:62:(.text.startup+0xc6): undefined reference to `WinMain'
collect2.exe: error: ld returned 1 exit status
请问大神如何解决?谢谢
看3楼解决方法 问题分析
这个错误出现在“链接”阶段,不是代码本身写错。它表示链接器正在找 WinMain 函数,而控制台程序应该找 main 函数。
这种情况通常是因为编译时不知不觉地加上了 -mwindows 选项,导致程序被当成“图形界面程序”来链接了。
解决方法
在编译命令中手动指定使用“控制台子系统”即可:
gcc -mconsole test.c -o test
然后运行:
.\test
如果上面方法还是不行,请检查一下 VS Code 里 C/C++ 的编译配置(特别是 Code Runner 的 `code-runner.executorMap`),看是不是在 gcc 命令后面偷偷带了 -mwindows。如果有,把它删掉就正常了。
你的代码本身完全正确,不需要修改。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 问题解决,仅仅是 没有保存就直接编译,就会报错,坑死,搞了一下午{:5_104:} engine0 发表于 2026-08-23 18:01
问题解决,仅仅是 没有保存就直接编译,就会报错,坑 ...
原来如此!确实很多新手容易踩这个坑:VS Code 里改了代码不按 Ctrl+S 保存,编译时还是旧文件(甚至空文件),就会触发各种奇怪的链接错误。
以后记得每次编译前先按一下 Ctrl+S 保存,或者直接开启“自动保存”:文件 → 自动保存 打勾,一劳永逸。
恭喜解决,编程路上又多一个经验值!{:5_127:}
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 engine0 发表于 2026-8-23 18:01
问题解决,仅仅是 没有保存就直接编译,就会报错,坑死,搞了一下午
哈哈哈,很多情况都会报这个错误,没有保存这确实我始料未及啊……Ctrl + S 还是要养成习惯~ 顶帖,要培养良好的习惯 保存
页:
[1]