मेरे पास एक एमएस सी ++ प्रोजेक्ट है (चलो इसे प्रोजेक्ट ए कहते हैं) कि मैं वर्तमान में एक स्थिर पुस्तकालय (.lib) के रूप में संकलित हूं। यह एक वैश्विक परिवर्तनीय foo परिभाषित करता है। मेरे पास दो अन्य परियोजनाएं हैं जो अलग-अलग संकलित करती हैं (क्रमशः उन्हें बी और सी कहते हैं) और प्रत्येक साझा साझा लाइब्रेरी ए को जोड़ती है। बी और सी दोनों ही डीएल हैं जो एक ही प्रक्रिया में लोड होते हैं। मैं एक ही प्रक्रिया में बी और सी के बीच ए से foo का एक उदाहरण साझा करना चाहता हूं: एक सिंगलटन। मुझे यकीन नहीं है कि परियोजना ए के साथ सिंगलटन पैटर्न को कैसे पूरा किया जाए क्योंकि यह स्थिर रूप से बी और सी में संकलित है। यदि मैं बी और सी दोनों में बाहरी रूप में foo घोषित करता हूं, तो मैं बी और सी में अलग-अलग उदाहरणों के साथ समाप्त होता हूं। मानक, सरल सिंगलटन क्लास पैटर्न का उपयोग एक स्थिर getInstance विधि के साथ दो स्थैतिक फू इंस्टॉलेशन में होता है।सी ++ स्थिर पुस्तकालय में साझा वैश्विक चर
क्या इसे पूरा करने का कोई तरीका है जबकि परियोजना ए को बी और सी में स्थिर रूप से संकलित किया गया है? या मुझे ए डीएलएल बनाना है?
* "अगर मैं बी और सी दोनों में बाहरी के रूप में foo घोषित करता हूं, तो मैं बी और सी में विभिन्न उदाहरणों के साथ समाप्त होता हूं।" * - क्या यह वाकई सच है? –
यह सच प्रतीत होता है - यह व्यवहार है जब मैं डीबगिंग करते समय प्रोग्राम के माध्यम से कदम उठाता हूं। मैं दो बार बुलाए जाने वाले फू के लिए कन्स्ट्रक्टर देखता हूं और बाहरी चर के पते g_Foo दो मॉड्यूल बी और सी में अलग होते हैं। क्या यह मामला नहीं होना चाहिए? – Zach
संभावित डुप्लिकेट [सी ++ में प्रक्रिया-वैश्विक चर को कैसे कार्यान्वित करें?] (Http://stackoverflow.com/questions/669989/how-to-implement-process-global-variable-in-c) – Zach