Avatar ·

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