ตามชื่อที่แนะนำ สัญลักษณ์ที่คุณประกาศไม่ได้ถูกกำหนดโดยคุณ สิ่งนี้อาจเกิดขึ้นเนื่องจากหลายกรณี เรามาดูกันดีกว่าสามคน -
-
คุณลืมกำหนดชื่อที่ประกาศ ตัวอย่างเช่น คุณประกาศฟังก์ชันในไฟล์และใช้งานที่ไหนสักแห่ง แต่คุณไม่ได้ให้คำจำกัดความ รหัส -
#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- วิธีแก้ไข