Avatar ·

خطأ الرابط "مرجع غير معرّف" في C++: الأسباب والحل

مرحباً! بدأت تعلم لغة 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`، والرأس متصل. لماذا لا يراها linker؟ ما هو «undefined reference»؟