خطأ الرابط "مرجع غير معرّف" في 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»؟