विंडोज़ अभी भी डीएलएल का उपयोग करते हैं और मैक प्रोग्राम डीएलएल का उपयोग नहीं करते हैं। क्या वे तकनीक का उपयोग करने के लाभ या नुकसान हैं?
दोनों साझा पुस्तकालयों का उपयोग करते हैं, वे बस एक अलग नाम का उपयोग करते हैं।
यदि किसी प्रोग्राम इंस्टॉलेशन में सभी डीएलएल शामिल हैं तो इसकी आवश्यकता है ताकि यह 100% अच्छी तरह से काम करे, क्या यह सभी पुस्तकालयों को स्थिर रूप से जोड़ने जैसा ही होगा?
कुछ हद तक। जब आप किसी प्रोग्राम में लाइब्रेरी को स्थिर रूप से लिंक करते हैं, तो आपको एक एकल, बहुत बड़ी फ़ाइल मिल जाएगी, डीएलएल के साथ, आपके पास कई फाइलें होंगी।
स्थैतिक रूप से लिंक की गई फ़ाइल को "साझा लाइब्रेरीज़ को हल करें" चरण की आवश्यकता नहीं होगी (जो प्रोग्राम लोड होने पर होता है)। बहुत समय पहले, एक स्थिर कार्यक्रम लोड करना मतलब था कि पूरा कार्यक्रम पहली बार राम में लोड किया गया था और फिर, "साझा पुस्तकालयों को हल करें" चरण हुआ। आज, केवल कार्यक्रम के कुछ हिस्सों, जिन्हें वास्तव में निष्पादित किया जाता है, मांग पर लोड होते हैं। तो एक स्थिर कार्यक्रम के साथ, आपको डीएलएल को हल करने की आवश्यकता नहीं है। डीएलएल के साथ, आपको उन्हें एक साथ लोड करने की आवश्यकता नहीं है। तो प्रदर्शन के अनुसार, वे बराबर होना चाहिए।
जो "डीएलएल नरक" छोड़ देता है। विंडोज़ पर कई प्रोग्राम उन्हें आवश्यक सभी डीएलएल लाते हैं और वे उन्हें विंडोज निर्देशिका में लिखते हैं। शुद्ध प्रभाव यह है कि अंतिम स्थापित प्रोग्राम काम करते हैं और बाकी सब कुछ टूटा जा सकता है। लेकिन एक सरल कामकाज है: डीएलएल को उसी निर्देशिका में EXE के रूप में स्थापित करें। विंडोज़ पहले और फिर विभिन्न विंडोज पथों को वर्तमान निर्देशिका की खोज करेगा। इस तरह, आप डिस्क की थोड़ी सी जगह बर्बाद कर देंगे लेकिन आपका प्रोग्राम काम करेगा और, सबसे महत्वपूर्ण बात यह है कि आप कुछ और नहीं तोड़ेंगे।
कोई यह तर्क दे सकता है कि आपको Windows निर्देशिका में पहले से मौजूद (उसी संस्करण के साथ) DLL इंस्टॉल नहीं करना चाहिए, लेकिन फिर, आप फिर से कुछ खराब ऐप के लिए कमजोर हैं जो आपके द्वारा तोड़ने वाले किसी संस्करण के साथ आवश्यक संस्करण को ओवरराइट करता है गर्दन। दोष यह है कि आपको अपने ऐप के लिए सुरक्षा सुधारों को वितरित करना होगा; आप अपने कोड को सुरक्षित करने के लिए विंडोज अपडेट या इसी तरह की चीजों पर भरोसा नहीं कर सकते हैं। यह एक तंग जगह है; क्रैकर्स सुरक्षा मुद्दों से बहुत पैसा कमा रहे हैं और जब कोई व्यक्ति अपने बैंकिंग डेटा चुराता है तो लोग आपको पसंद नहीं करेंगे क्योंकि आपने जल्द ही सुरक्षा सुधार जारी नहीं किए हैं।
यदि आप कई लोगों के लिए अपने आवेदन का समर्थन करने की योजना बनाते हैं, तो 20 साल, प्रोग्राम निर्देशिका में सभी डीएलएल स्थापित करना आपके लिए है। यदि नहीं, तो कोड लिखें जो जांचता है कि सभी डीएलएल के उपयुक्त संस्करण स्थापित हैं और उपयोगकर्ता को इसके बारे में बताएं, इसलिए उन्हें पता है कि आपका ऐप अचानक क्यों दुर्घटनाग्रस्त हो जाता है।
संभावित डुप्लिकेट [गतिशील बनाम स्थैतिक पुस्तकालयों का उपयोग कब करें] (http://stackoverflow.com/questions/140061/when-to-use- गतिशील- vs-static- पुस्तकालय) –