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”?