दिलचस्प पोस्ट
Sass में चर तर्क सूचियों के साथ एक संपत्ति के लिए एकाधिक मान $ (document) .ready (function () {}); पृष्ठ के निचले भाग में बनाम स्क्रिप्ट डिफ़ॉल्ट ऑब्जेक्ट.स्टोस्टिंग () क्यों हैशोड में शामिल है? Android डिवाइस चयनकर्ता – डिवाइस नहीं दिखा रहा है एक दांतेदार सरणी क्या है? कैसे foreach loops सी # में काम करते हैं? स्काला विधि घोषणा में बराबर चिह्न का उपयोग कब करना है? क्या हमें अब भी HTML5 में स्लैश की आवश्यकता है? कमांड लाइन से जावा क्लासी को कैसे निष्पादित करें अक्षांश / देशांतर में एक पते को कैसे परिवर्तित करें? ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में एक सार डेटा प्रकार क्या है? सी ++ में _tmain () और मुख्य () के बीच अंतर क्या है? स्पार्क एएलएस भविष्यवाणी सभी खाली रिटर्न रैप्सन के साथ टेबल के साथ स्टाइल के लिए एनटी-बाल का उपयोग कैसे करें? जावा में एमएचएलएलएम (.एमएचटी) फ़ाइलों को पढ़ने या पार्स करने के तरीके

क्या मुझे दृश्य स्टूडियो सी रनटाइम से स्थायी या गतिशील रूप से लिंक करना चाहिए?

मैंने दोनों पक्षों पर बहस पढ़ी है कि क्या सी रनटाइम लाइब्रेरी से विज़ुअल स्टूडियो प्रोजेक्ट्स में स्थिर या गतिशील रूप से लिंक होना चाहिए, और मुझे अभी भी पूरी तरह से यकीन नहीं है कि क्या सोचने चाहिए

मेरी परियोजना कुछ तीसरे पक्ष के पुस्तकालयों (पायथन, एचडीएफ 5, ट्रिलिनो और माइक्रोसॉफ्ट एमपीआई) में खींचती है, जिनमें से प्रत्येक को एक ही रनटाइम लाइब्रेरी के साथ मेरा अंतिम निष्पादन योग्य बनाना है (अन्यथा वे एक साथ लिंक नहीं किया जा सकता है)। स्थिर रूप से लिंक करते समय, इनमें से प्रत्येक पुस्तकालय में सी रनटाइम की एक प्रति होती है। मैंने पढ़ा है कि यह मुद्दों का कारण बनने के लिए उत्तरदायी है क्योंकि अंतिम निष्पादन योग्य में रनटाइम के कई प्रतिलिपियां शामिल होंगी, जिनमें से कोई भी एक दूसरे के साथ बातचीत नहीं कर सकता लेकिन क्या लिंकर शिकायत नहीं करेगा अगर समान प्रतीकों को गुणा किया गया?

मैं "डीएलएल नरक" से बचना चाहूंगा, लेकिन उन प्रलोभन त्रुटियों के बारे में चिंतित हूँ जो रनटाइम के कई प्रतियों में स्थिर रूप से जोड़ने से उत्पन्न हो सकती हैं। क्या मैं चीजों को गलत पढ़ रहा हूं?

इसके अलावा, मैं विज़ुअल स्टूडियो 2005 का उपयोग कर रहा हूं और मैंने पढ़ा है कि सर्विस पैक 1 रनटाइम पीछे-संगत नहीं है। क्या इसका मतलब यह है कि एसपी 1 के बिना निर्मित एक एप एक मशीन पर नहीं चलेंगे जो कि एसपी 1 डीएलएस है, भले ही उनके पास एक ही नाम (जैसे एमएसवीसीआर 80 डीएलएल) है?

Solutions Collecting From Web of "क्या मुझे दृश्य स्टूडियो सी रनटाइम से स्थायी या गतिशील रूप से लिंक करना चाहिए?"

स्थैतिक रूप से लिंक करना आपके सभी EXE और DLL को ब्लोट करेगा, और दुर्घटनाओं का कारण बन सकता है (उदाहरण के लिए यदि एक DLL में कॉल एक स्वतंत्र DLL में malloc () द्वारा आवंटित सूचक के साथ निशुल्क () कॉल करता है)।

गतिशील रूप से लिंक करके और रनटाइम DLL को निजी विधानसभाओं के रूप में तैनात करके आप दोनों दुनिया का सर्वश्रेष्ठ प्राप्त कर सकते हैं। इसका मतलब यह है कि विशेष रूप से नामित निर्देशिका की प्रतिलिपि डालने के क्रम में रनटाइम DLLs और आपके निष्पादन योग्य के बगल में मौजूद मैनिफ़ेस्ट।

विवरण के लिए http://msdn.microsoft.com/en-us/library/ms235291(VS.80).aspx पर "निजी सीमांत के रूप में दृश्य सी ++ पुस्तकालय DLLs को नियोजित करना" अनुभाग देखें, लेकिन मूल रूप से आपका एप्लिकेशन इस प्रकार दिखता है:

c:\Program Files\My App\MyApp.exe c:\Program Files\My App\MyLibrary.dll c:\Program Files\My App\Microsoft.VC80.CRT\Microsoft.VC80.CRT.manifest c:\Program Files\My App\Microsoft.VC80.CRT\msvcr80.dll 

आपके आखिरी प्रश्न के अनुसार, हाँ, लक्ष्य मशीन को काम करने के लिए रनटाइम DLL के सही संस्करण की जरूरत है, लेकिन उन्हें निजी विधानसभाओं के रूप में तैनात करके, आप यह गारंटी देते हैं कि

एक अन्य लाभ यह है कि गैर-व्यवस्थापक उपयोगकर्ता आपके ऐप को स्थापित कर सकते हैं (प्रोग्राम फाइल में नहीं बल्कि अन्यत्र) – उन्हें फ़ाइलों को WinSxS क्षेत्र में लिखने की अनुमति की आवश्यकता नहीं है।

केवल एक बार जब आप रनटाइम की एक से अधिक प्रतियां प्राप्त करेंगे, तो जब आप एक लाइब्रेरी को DLL में स्थिर रूप से लिंक करते हैं – प्रत्येक DLL को एक कॉपी मिल जाएगी, और ऐसा भी होगा। अगर वे सभी स्थैतिक लाइब्रेरी हैं और DLL नहीं हैं, तो वे सभी एक साथ लिंक करेंगे और आपकी सभी लाइब्रेरी एक ही रनटाइम को साझा करेंगे।

यही लिंकर का काम है

… यह स्थिर रूप से है … DLL Hell को ठीक करने का प्रयास है कि अच्छी तरह से काम नहीं किया है … बस स्थिर स्थापना के साथ अपने स्थापना के लिए अतिरिक्त 200k जोड़ें।

स्थैतिक पुस्तकालयों को स्थैतिक रूप से अन्य स्थिर पुस्तकालयों से जोड़ा जाना आवश्यक नहीं है। आपको केवल अपने मुख्य परियोजना में सभी स्थैतिक पुस्तकालयों को लिंक करने की आवश्यकता है इस तरह से संकलक कई प्रतीकों के बारे में शिकायत नहीं करेगा।