MacOS下VS Code运行C++程序报exited with code 1错误如何解决?
报错根因说明
这个报错是MacOS下clang编译器链接阶段的典型错误,错误日志中Undefined symbols for architecture arm64: "_main"已经明确指向问题:链接器找不到C++程序必须的全局入口函数main对应的符号,无法生成可执行文件,最终返回退出码1。
修复步骤
- 第一步:检查你的
demo.cpp代码,确认是否存在符合标准规范的main函数,C++标准要求程序入口必须为全局作用域下的int类型main函数,合法写法如下:
// 无参数版本 int main() { // 此处写你的业务代码 return 0; } // 带命令行参数版本 int main(int argc, char *argv[]) { // 此处写你的业务代码 return 0; }
- 第二步:排查常见的书写错误:
- 避免
main的拼写错误,比如误写为mian等 - 不要省略
main函数前的int返回值声明,C++标准不允许默认返回值,clang编译器不支持省略写法 - 不要将
main函数定义在自定义命名空间内部,否则链接器无法找到全局作用域下的入口符号 - 如果你是多文件项目,确认
main函数定义在demo.cpp中,如果在其他源文件,需要将对应源文件也加入编译指令,比如你有main.cpp和utils.cpp,编译指令需要写g++ main.cpp utils.cpp -o demo
- 避免
- 第三步:修正代码后重新运行即可,编译链接流程会正常生成可执行文件。
内容的提问来源于stack exchange,提问作者Abhishek Kataria
相关产品推荐
相关产品推荐

