स्टेटिक सी लाइब्रेरी को सी कोड से जोड़ने में त्रुटियों का अपरिभाषित संदर्भ
जब आप किसी स्टैटिक सी लाइब्रेरी को सी कोड से जोड़ने का प्रयास कर रहे हों, तो आप ऐसा कर सकते हैं। लिंक क्रम को संशोधित करने के बावजूद, "अपरिभाषित संदर्भ" त्रुटियों का सामना करना पड़ा। यह समस्या C और C संकलन द्वारा बनाए गए अलग-अलग प्रतीक नामों से उत्पन्न होती है जिन्हें 'नेम मैंगलिंग' के रूप में जाना जाता है।
C में, लिंकर त्रुटि संदेशों में विघटित प्रतीक नामों को प्रदर्शित करता है, जो भ्रमित करने वाला हो सकता है। ऑब्जेक्ट फ़ाइल (*.o) को "nm -u" के साथ निरीक्षण करने से पता चलता है कि संदर्भित प्रतीक नाम लाइब्रेरी में मौजूद नामों से मेल नहीं खाते हैं।
इस समस्या को हल करने के लिए, बाहरी के रूप में लिंक किए गए फ़ंक्शन का उपयोग करके संकलित किया गया था सी कंपाइलर की फ़ंक्शन घोषणाएं "बाहरी "सी" {}" ब्लॉक में संलग्न होनी चाहिए। यह ब्लॉक के भीतर हर चीज़ के लिए C नाम में गड़बड़ी को दबा देता है।
उदाहरण के लिए:
extern "C" {
#include
#include
}
वैकल्पिक रूप से, आप फ़ंक्शन घोषणाओं को हेडर फ़ाइलों में निम्नानुसार लपेट सकते हैं:
#if defined (__cplusplus)
extern "C" {
#endif
/*
* Put plain C function declarations here ...
*/
#if defined (__cplusplus)
}
#endif
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3