मुझे अभी एक समस्या है जो मुझे भ्रमित कर रही है: मेरे पास सी ++ में लिखे गए सॉफ़्टवेयर का टुकड़ा है और सी में लाइब्रेरी के खिलाफ लिंक हैं I में हेडर क्लासेस का उपयोग करना शामिल है सामान्यजीसीसी अनुकूलन परिणाम रनटाइम पर "अपरिभाषित प्रतीक" में परिणाम
extern "C" {
#include <libheader.h>
}
जब तक मैं जीसीसी के अनुकूलन का उपयोग नहीं करता तब तक सब कुछ ठीक काम करता है। एक बार जब मैं -O1 चालू करता हूं, इस प्रकार रनटाइम के दौरान पहला ऑप्टिमाइज़ेशन स्तर मुझे इस लाइब्रेरी के प्रतीक के लिए "अपरिभाषित प्रतीक" त्रुटि मिलती है। हालांकि, नाम नाम mangling के माध्यम से चला गया है जो extern "C"
के अक्षम कारण होना चाहिए।
इस मामले में प्रश्न में प्रतीक को कॉल करने वाले फ़ंक्शन को रेखांकित किया गया है। प्रयुक्त कंपाइलर जीसीसी 4.4.3 है।
मैं ईमानदारी से यह भी नहीं जानता कि क्या खोजना है, इसलिए यदि आप में से कोई मुझे इस व्यवहार के लिए कुछ कारण दे सकता है तो मैं वास्तव में आभारी रहूंगा।
आपके समर्थन के लिए धन्यवाद।
क्या आप इनलाइन को हटा सकते हैं (यानी फ़ंक्शन को इनलाइन नहीं करते हैं) और देखें कि यह काम करना शुरू कर रहा है या नहीं? – sashoalm
वैकल्पिक रूप से @ सैटून के सुझाव के लिए, क्या आप इनलाइन फ़ंक्शन को एक C++ फ़ंक्शन कॉल कर सकते हैं जो सी फ़ंक्शन को लपेटता है, और देखें कि क्या यह काम करना शुरू कर देता है? –
आपके उत्तर के लिए धन्यवाद! मैंने दोनों सुझावों की कोशिश की, हालांकि, प्रतीक अभी भी नहीं मिला है। – Thilo