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

头文件已声明的函数编译时提示未定义是什么原因?如何解决?

问题产生原因

这是典型的链接阶段错误,和编译阶段无关:

  • IDE能正常识别函数签名是因为头文件my_make.h里存在printSomething的声明,IDE的代码索引能正常读到这个声明;
  • 你的CMake构建配置没有把包含printSomething实现的printer.c加入到prob1目标的源文件列表里,所以编译时只生成了readMake.c的目标文件,链接器找不到printSomething的具体实现,就抛出了undefined reference报错。
解决方法
  • 如果你要手动直接编译验证代码正确性,执行如下命令即可:
    gcc readMake.c printer.c -o prob1.exe
    编译完成后直接运行生成的可执行文件就能正常输出结果。
  • 如果你要继续用CMake构建,修改项目根目录的CMakeLists.txt文件:
    找到add_executable(prob1 xxx.c)这一行,原来的配置里应该只写了readMake.c,把printer.c补充进去,修改后如下:
    add_executable(prob1 readMake.c printer.c)
    修改完成后重新运行cmake生成构建脚本,再执行make命令就能正常编译通过。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:36:03