You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++新手首次编译Demo时g++报undefined reference错误

问题解决方法

你遇到的是链接阶段错误,错误原因和解决方案如下:

错误根因

  • 你执行的编译命令g++ main.cpp仅编译了main.cpp单个源文件,mesh()函数的实现代码在mesh.cpp中,链接器无法找到对应函数的实现,因此抛出undefined reference报错
  • 额外你main.cpp中存在语法错误:argv[0] = "main" argv[1] = "buffer.obj"两行代码之间缺少分号分隔,也会导致编译失败

解决方案

步骤1:修复代码语法错误

修改main.cpp中的错误行,补充分号:

// 修改前(错误)
argv[0] = "main"  argv[1] = "buffer.obj"
// 修改后(正确)
argv[0] = "main"; argv[1] = "buffer.obj";

额外提示:如果程序运行时没有传入参数,argv[1]本身是空指针,直接赋值属于非法内存操作,可能触发运行崩溃,测试阶段可以直接删除这两行,直接使用你定义的filename变量即可

步骤2:使用正确的编译命令

编译时需要把所有用到的源文件都加入编译指令,让编译器完成全部源文件的编译和链接:

g++ main.cpp mesh.cpp -o main

步骤3:运行生成的可执行文件

编译无报错后执行以下命令运行程序:

./main

额外优化建议

  • 给mesh.h添加头文件保护,避免重复包含报错,可在mesh.h最顶部添加#pragma once
  • 不要在头文件中使用using namespace std,避免引入全局命名空间污染,建议只在cpp实现文件中按需使用

内容的提问来源于stack exchange,提问作者jack tsang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:39:04