जैसा कि नाम से पता चलता है, आपके द्वारा घोषित एक प्रतीक आपके द्वारा परिभाषित नहीं किया गया था। ऐसा कई मामलों के कारण हो सकता है। आइए उनमें से तीन पर एक नज़र डालें -
-
आप घोषित नाम को परिभाषित करना भूल गए। उदाहरण के लिए, आपने किसी फ़ाइल में फ़ंक्शन घोषित किया है और इसे कहीं उपयोग किया है। लेकिन आपने इसकी परिभाषा नहीं दी। कोड -
#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- कैसे-कैसे-मैं-ठीक करें