Avatar ·

C++中链接器错误“undefined reference”:原因与修复

你好!我开始学习C++,遇到了一个无法理解的错误。我写了一个简单的两数相加程序,但编译器在链接阶段报了一个奇怪的错误。 这是我的代码。有一个头文件 `math_utils.h`: ```cpp #ifndef MATH_UTILS_H #define MATH_UTILS_H int add(int a, int b); #endif ``` 文件 `math_utils.cpp`: ```cpp #include "math_utils.h" int add(int a, int b) { return a + b; } ``` 以及主文件 `main.cpp`: ```cpp #include #include "math_utils.h" int main() { std::cout << "Sum: " << add(5, 3) << std::endl; return 0; } ``` 我这样编译:`g++ main.cpp -o program`。结果报错: ``` /tmp/ccXxYyZz.o: In function `main': main.cpp:(.text+0x1a): undefined reference to `add(int, int)' collect2: error: ld returned 1 exit status ``` 我检查过了——函数 `add` 在 `math_utils.cpp` 中已定义,头文件也包含了。为什么链接器找不到它?什么是“undefined reference”?