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

C++程序拆分头文件后出现undefined reference to `Log_In()' 错误,collect2.exe返回ld returned 1 exit status求助

解决 undefined reference to Log_In() 链接错误

这个错误本质是链接器找不到Log_In()函数的二进制实现代码,我帮你拆解问题和解决步骤:

核心原因

你当前的编译命令只处理了main.cpp:

g++ main.cpp -o main

编译器会把main.cpp编译成目标文件,但Log_In()的实现写在Log_In.cpp里,这个文件根本没被编译进项目,链接器自然找不到对应函数的代码,就会抛出undefined reference错误。

直接解决方案:修改编译命令

把所有需要的.cpp源文件都加入编译命令,比如:

g++ main.cpp Log_In.cpp -o main

如果Log_In.cpp不在当前工作目录(比如放在src子文件夹里),要补上相对路径:

g++ main.cpp src/Log_In.cpp -o main

重新执行这个命令,链接错误应该就能解决。

额外检查项(避免后续问题)

  1. 确认头文件路径匹配
    你的main.cpp用#include "./headers/Log_In.h",Log_In.cpp用#include "../headers/Log_In.h",要确保目录结构和这个路径对应,比如:

    Login_register/
    ├── main.cpp
    ├── headers/
    │   └── Log_In.h
    └── Log_In.cpp  # 或者在src子目录里
    

    路径不匹配会导致编译阶段报错,不过你现在的问题是链接错误,这一步是提前规避坑。

  2. 确认函数签名完全一致
    头文件里声明的bool Log_In();和Log_In.cpp里的实现bool Log_In(){...}签名完全一致,参数、返回值都没差,这部分你已经做对了,没问题。

补充:编译与链接的小知识

简单说,编译是把单个.cpp文件转成独立的目标文件(.o),链接是把所有目标文件(加上依赖库)合并成可执行文件。你之前只编译了main.cpp,生成的目标文件里只有主函数的代码,没有Log_In()的实现,所以链接器找不到对应代码报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 06:27:31