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

macOS arm64架构编译C++程序遇未定义符号错误求助

编译错误排查与解决:Undefined symbols for Table::insert_row

错误原因

这个属于链接阶段错误:编译器通过table.h找到了Table::insert_row(Row*)的声明,能通过编译,但链接器找不到该函数的具体实现代码——你当前的编译命令只编译了db.cpp,没有把包含insert_row实现的table.cpp纳入编译链接流程。

直接解决方案

修改编译命令,将table.cpp也加入编译列表:

g++ -std=c++1z -Wall -Wextra -Werror -pedantic -O3 db.cpp table.cpp -o db

额外排查点(若上述方案无效时)

  • 核对table.h中的函数声明与table.cpp中的实现是否完全一致:包括返回值类型、参数类型、函数名、所属类名,你当前的代码中声明void* insert_row(Row*);和实现void* Table::insert_row(Row* row)是匹配的,但要避免拼写、大小写或类型差异。
  • 检查是否存在命名空间问题:如果Table类位于某个命名空间中,实现时必须加上命名空间前缀,比如namespace MyDB { void* Table::insert_row(Row* row) { ... } }。
  • 确认table.cpp没有语法错误导致编译失败:单独编译table.cpp(g++ -c table.cpp),看是否有隐藏的编译错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 21:12:22