मेरे पास प्लग-इन लेखकों के लिए सी ++ इंटरफ़ेस के हिस्से के रूप में उपयोग की जाने वाली एसटीएल ऑब्जेक्ट्स के साथ एक एप्लिकेशन है।एसटीएल ऑब्जेक्ट्स के साथ एसटीएल ऑब्जेक्ट्स के साथ साझा लाइब्रेरीज़ की जीसीसी संगतता
मुझे पता है कि अनुकूलता के लिए सबसे अच्छा विकल्प इसके बजाय एक सी इंटरफ़ेस का उपयोग करना होगा, लेकिन यह वर्तमान में व्यवहार्य नहीं है।
मुझे पता है कि libstdC++ में जीसीसी 3.4 से 4.8 तक सब कुछ एबीआई के मामले में अत्यधिक संगत रहा है।
तो उदाहरण के लिए, यदि मैं जीसीसी 4.1 के साथ संकलित करता हूं, और एक प्लग-इन विक्रेता जीसीसी 4.7 के साथ संकलित कोड लिखता है, तो कोने के मामलों को छोड़कर सभी एक जीबीसी 4.7 या उसके बाद के संस्करण के साथ libstdC++ संस्करण के साथ एक मंच पर अच्छे होंगे, प्रदान किया गया है एसटीएल उपयोग केवल .so के लिए आंतरिक है, और बाहरी .so इंटरफ़ेस शुद्ध सी का उपयोग कर रहा है, जो दुख की बात है कि मेरे लिए मामला नहीं है।
तो, मैं प्लग-इन इंटरफ़ेस के हिस्से के रूप में उपयोग किए जाने वाले एसटीएल कक्षाओं के संबंध में मामला क्या होगा इस बारे में उत्सुक हूं। क्या मैं सुरक्षित ऑब्जेक्ट्स के बीच एसटीएल ऑब्जेक्ट्स को सुरक्षित रूप से पास कर सकता हूं जिन्हें एक ही कंपाइलर संस्करण (जैसे 4.1 और 4.8) से संकलित नहीं किया गया था? और अगर कुछ अलग संकलक विकल्पों का उपयोग करते हैं तो टेम्पलेट्स को संकलित और हल करने के संबंध में मुझे कुछ भी ध्यान देने की आवश्यकता है?
मुझे संदेह है कि यह समस्याग्रस्त हो जाएगा। हालांकि, एक मौका है कि जीसीसी लोगों द्वारा किए गए प्रतीक वर्जनिंग जादू किसी भी तरह से यह काम कर सकता है।
इस प्रश्न के लिए, मुझे केवल पूर्व-सी ++ 11 संकलन और लिंकिंग में रूचि है। मैं जीसीसी का उपयोग कर लिनक्स और मैक ओएस एक्स में भी रूचि रखता हूं।
जब तक लोग इसे विफल करने के अपने रास्ते से बाहर नहीं जा रहे हैं, तो यह ठीक काम करना चाहिए। –
@marc प्रतिक्रिया के लिए धन्यवाद। कोई भी मौका आप एक संदर्भ या एक लिंक प्रदान कर सकते हैं जो इसमें कुछ और विस्तार से (या शायद इस पर भरोसा करने वाली परियोजनाओं) में जाता है? – Rob
यह आवश्यक नहीं होगा, हालांकि, जीसीसी> = 5.0 के लिए, क्योंकि उन्होंने [एबीआई बदल दिया] [https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html) – Walter