Linker-Fehler „undefined reference“ in C++: Ursachen und Behebung
Hallo! Ich habe angefangen, C++ zu lernen, und bin auf einen Fehler gestoßen, den ich nicht verstehe. Ich schreibe ein einfaches Programm, das zwei Zahlen addiert, aber der Compiler gibt einen seltsamen Fehler während der Link-Phase aus.
Hier ist mein Code. Es gibt eine Header-Datei `math_utils.h`:
```cpp
#ifndef MATH_UTILS_H
#define MATH_UTILS_H
int add(int a, int b);
#endif
```
Die Datei `math_utils.cpp`:
```cpp
#include "math_utils.h"
int add(int a, int b) {
return a + b;
}
```
Und die Hauptdatei `main.cpp`:
```cpp
#include
#include "math_utils.h"
int main() {
std::cout << "Sum: " << add(5, 3) << std::endl;
return 0;
}
```
Ich kompiliere so: `g++ main.cpp -o program`. Als Antwort erhalte ich den Fehler:
```
/tmp/ccXxYyZz.o: In function `main':
main.cpp:(.text+0x1a): undefined reference to `add(int, int)'
collect2: error: ld returned 1 exit status
```
Ich habe überprüft – die Funktion `add` ist in `math_utils.cpp` definiert, der Header ist eingebunden. Warum sieht der Linker sie nicht? Was ist eine „undefined reference“?