Avatar ·

Error del enlazador «undefined reference» en C++: causas y solución

¡Hola! Empecé a estudiar C++ y me encontré con un error que no puedo entender. Escribo un programa simple que suma dos números, pero el compilador da un error extraño en la etapa de enlazado. Aquí está mi código. Tengo un archivo de encabezado `math_utils.h`: ```cpp #ifndef MATH_UTILS_H #define MATH_UTILS_H int add(int a, int b); #endif ``` El archivo `math_utils.cpp`: ```cpp #include "math_utils.h" int add(int a, int b) { return a + b; } ``` Y el archivo principal `main.cpp`: ```cpp #include #include "math_utils.h" int main() { std::cout << "Sum: " << add(5, 3) << std::endl; return 0; } ``` Compilo así: `g++ main.cpp -o program`. Como respuesta obtengo el error: ``` /tmp/ccXxYyZz.o: In function `main': main.cpp:(.text+0x1a): undefined reference to `add(int, int)' collect2: error: ld returned 1 exit status ``` He verificado: la función `add` está definida en `math_utils.cpp`, el encabezado está incluido. ¿Por qué el enlazador no la ve? ¿Qué es «undefined reference»?