ตามชื่อที่แนะนำ สัญลักษณ์ที่คุณประกาศไม่ได้ถูกกำหนดโดยคุณ สิ่งนี้อาจเกิดขึ้นเนื่องจากหลายกรณี เรามาดูกันดีกว่าสามคน -
-
คุณลืมกำหนดชื่อที่ประกาศ ตัวอย่างเช่น คุณประกาศฟังก์ชันในไฟล์และใช้งานที่ไหนสักแห่ง แต่คุณไม่ได้ให้คำจำกัดความ รหัส -
#include<iostream> void foo(); int main() { foo(); // Declared but not defined }
-
คุณกำหนดไว้แต่ไม่ได้ใช้ชื่อที่ผ่านการรับรอง สมมติว่าคุณสร้างคลาสด้วยเมธอดและกำหนดเมธอดนั้น แต่ลืมใช้การแก้ไขขอบเขตเพื่อเชื่อมโยงฟังก์ชันนั้นกับคำจำกัดความนั้นและใช้ฟังก์ชันนั้นที่ไหนสักแห่ง ตัวอย่างเช่น
#include<iostream> class A { void foo(); }; void foo() { } // should have used A::foo int main() { A a; a.foo(); // Not defined! }
-
คุณไม่ได้รวมการขึ้นต่อกันในลำดับที่ไม่ถูกต้อง ตัวเชื่อมโยงพยายามเชื่อมโยงในลำดับที่คุณระบุ ดังนั้นในกรณีที่คุณใช้วิธีการก่อนคำจำกัดความก็มักจะทำให้เกิดข้อผิดพลาดนี้
ไม่สามารถสร้างรายการเงื่อนไขที่อาจทำให้เกิดข้อผิดพลาดนี้ได้ แต่คุณสามารถอ้างอิงถึงโพสต์นี้สำหรับรายการสาเหตุที่เป็นไปได้ที่ได้รับการดูแลจัดการอย่างดี - https://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error-and- วิธีแก้ไข