VSCode使用MinGW编译C++报undefined reference to WinMain错误求解
报错原因说明
undefined reference to WinMain 是MinGW链接器抛出的错误:Windows平台下控制台程序的默认入口是你代码里写的main()函数,GUI程序的默认入口是WinMain(),现在链接器找不到WinMain,说明要么它识别错了程序类型默认按GUI程序编译,要么它找不到你写了main()函数的源文件。
之前遇到的cc1plus is not detected报错是MinGW未正确加入系统环境变量导致的,调整完环境变量后需要重启所有终端和VSCode才会生效,避免残留旧的环境变量配置。
排查解决步骤
- 确认源文件格式正确
打开路径C:\Users\angel\OneDrive\Documents\Visual Studio Code\PRogramming WorkSpace\C++,先开启Windows资源管理器的「文件扩展名」显示,确认你的代码文件后缀是.cpp,不是.c或者test.cpp.txt这类被隐藏了真实后缀的文件。 - 手动验证编译逻辑
在上述目录的地址栏直接输入powershell回车打开终端,手动执行命令:g++ test.cpp -o test.exe -mconsole
加-mconsole参数是强制指定编译为控制台程序,用main()作为入口。如果执行后没有报错,再运行.\test.exe就能看到Hello World输出,说明问题出在VSCode的默认运行配置上。 - 修复VSCode运行配置
安装C/C官方扩展后,按Ctrl+Shift+P调出命令面板,选择「C/C: 编辑配置(UI)」,找到「编译器参数」配置项,添加-mconsole参数即可。后续直接用VSCode运行就不会再报该错误。 - 兜底排查方案
如果上述操作后还是报错,打开MinGW安装管理器,确认已经完整安装gcc-g++、mingw32-base、mingw32-libgcc等基础开发组件,补装缺失组件后重启电脑重新配置环境变量即可。
内容的提问来源于stack exchange,提问作者Jamil Harun
相关产品推荐
相关产品推荐

