मैं अपने आवेदन निम्नलिखित तरीके की स्थापना के लिए अपने समाधान है साझा करने - (i दृश्य स्टूडियो का उपयोग कर रहा है और इस एक कुलपति ++ परियोजना है)exe और dll एक ही स्थिर पुस्तकालयों
नोट: ब्लू परियोजनाओं स्थिर पुस्तकालयों के रूप में संकलित हैं।
जैसा कि आप देख सकते हैं, एक्सई और डीएल कुछ स्थिर पुस्तकालयों (कोर.लिब और utils.lib) साझा करता है और एक्सई इन-टर्न डीएलएल का उपयोग करता है (आयात लाइब्रेरी का उपयोग करके "लोड टाइम डायनामिक लिंकिंग" के माध्यम से)।
मेरा प्रश्न यह है कि यह सही निर्भरता-सेटअप है? मुझे जो समस्या दिखाई देती है वह है, जब यह ऐप चालू होता है और चल रहा है, तो प्रक्रिया पता स्थान में कुछ डुप्लिकेट कोड सही होगा? मतलब, Core.lib और Utils.lib में मौजूद सभी फ़ंक्शन दो बार सही दिखाई देंगे? कॉस, एक्स और डीएलएल में यह कोड अलग-अलग संकलित होगा।
यदि हां, उपरोक्त मुद्दे से निपटने का एक तरीका है कोड को विशेष रूप से डीएलएल में ले जाना या एक्सई में रखना और इसे आयात/निर्यात के माध्यम से (बी/डब्ल्यू एक्सई और डीएल) साझा करना है। लेकिन मेरे पास कोर और यूटिल में कई क्लास ऑब्जेक्ट्स हैं और मुझे इन क्लास ऑब्जेक्ट्स को निर्यात/आयात करने का विचार पसंद नहीं है (हेडर फाइलों में __declspec (dllimport/dllexport) को जोड़कर) और इसके अलावा मैं इसे बहुत से आश्रित में जोड़ सकता हूं कक्षा वस्तुओं
यह मेरी समझ है और मैं गलत हो सकता हूं। कृपया सुधारों का सुझाव दें और ऐसी समस्याओं से निपटने के लिए सामान्य दृष्टिकोण क्या है?
सादर,
मुझे यह "समस्या" थी और फैसला किया कि, जब तक डुप्लिकेट कोड अपेक्षाकृत छोटा था, यह स्वीकार्य था। यदि डुप्लिकेट कोड पर्याप्त है, तो आपको इसे साझा लाइब्रेरी के रूप में बंडल करना चाहिए ... लेकिन फिर आप संभावित रूप से निर्भरता नरक में भाग लेते हैं यदि 'Algo-DLL 'लाइब्रेरी के एक अलग संस्करण की अपेक्षा करता है, तो ऐप' की तुलना में। –