Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Undefined reference / Unresolved external symbol errors ใน C++ คืออะไร?

เช่นชื่อที่บ่งบอก สัญลักษณ์ (symbol) ที่คุณประกาศ (declare) ไม่ได้ถูกกำหนด (define) โดยคุณ ข้อผิดพลาดนี้อาจเกิดจากหลายกรณี มาดู 3 กรณีหลัก -

  • คุณลืมกำหนดชื่อที่ประกาศ เช่น คุณประกาศฟังก์ชันในไฟล์หนึ่งและใช้งานที่อื่น แต่คุณไม่ได้ให้การนิยาม (definition) โค้ด -

#include <iostream>
void foo();
int main() {
    foo(); // ประกาศแต่ไม่ได้กำหนด
}
  • คุณกำหนดแต่ไม่ได้ใช้ qualified name สมมติคุณสร้างคลาสพร้อมเมธอดและกำหนดเมธอดนั้นแต่ลืมใช้ scope resolution operator เพื่อเชื่อมฟังก์ชันกับการนิยาม และใช้ฟังก์ชันนั้นที่อื่น ตัวอย่าง -

#include <iostream>
class A {
    void foo();
};
void foo() { } // ควรเป็น A::foo
int main() {
    A a;
    a.foo(); // ไม่ได้กำหนด!
}
  • คุณไม่ได้รวม dependencies ในลำดับที่ถูกต้อง ลิงเกอร์ (linker) พยายามลิงก์ตามลำดับที่คุณระบุ หากคุณใช้เมธอดก่อนการนิยาม มันอาจให้ข้อผิดพลาดนี้

การสร้างรายการครบถ้วนของเงื่อนไขที่ทำให้เกิดข้อผิดพลาดนี้เป็นไปไม่ได้ แต่คุณสามารถอ้างอิงโพสต์นี้สำหรับรายการที่จัดทำดี - Stack Overflow