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

如何在C++多文件中导入类并解决g++链接未定义引用错误

问题分析与解决方案

错误原因

你遇到的undefined reference错误是因为链接阶段找不到成员函数的具体实现:

  • header.h里只声明了example类和sum函数的原型,没有函数的具体代码;
  • 单独编译main.cpp时,链接器无法找到example::sum的实现代码(该代码在cpp.cpp中),因此报错。

另外需要注意:你的cpp.cpp中也存在一个main函数,这会导致后续编译时出现multiple definition of main错误,必须删掉cpp.cpp中的main函数——一个C++程序只能有一个入口函数main。

解决方法

方法1:一次性编译所有相关源文件

在PowerShell中执行以下命令,将main.cpp和cpp.cpp一起传给g++,编译器会分别编译两个文件,再自动链接生成可执行文件:

g++ main.cpp cpp.cpp -o main.exe

执行完成后直接运行./main.exe即可得到结果。

方法2:分步编译目标文件再链接

如果项目文件较多,分步编译更便于管理:

  1. 先编译cpp.cpp为目标文件(只编译不链接,生成.o格式的中间文件):
g++ -c cpp.cpp -o cpp.o
  1. 再编译main.cpp并链接刚才生成的cpp.o文件:
g++ main.cpp cpp.o -o main.exe

针对USB项目的适配逻辑

对于包含usb.h和usb.cpp的项目,处理逻辑完全一致:

  • 主程序文件(如main.cpp)只需包含#include "usb.h";
  • 编译时必须将usb.cpp纳入编译流程:要么用方法1一次性编译g++ main.cpp usb.cpp -o usb_app.exe,要么用方法2先编译usb.cpp为目标文件再与主程序链接。

内容的提问来源于stack exchange,提问作者Kishore Kumar S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:01:11