c++ - विजुअल स्टूडियो अतिरिक्त निर्भरता का उपयोग कब करें?




visual-studio linker (3)

C ++ में, आपको हेडर फाइलें (.h), (.lib) फाइलें और (.dll) फाइलें मिलीं।

Visual Studio में, आप इन फ़ाइलों को तीन अलग-अलग स्थानों में खोजने के लिए स्थान प्रदान करते हैं:

  1. कॉन्फ़िगरेशन गुण => C / C ++ => सामान्य => अतिरिक्त निर्देशिका शामिल करें। यहां आप "शामिल" निर्देशिकाओं को सूचीबद्ध करते हैं जिन्हें आप खोज और उपलब्ध कराना चाहते हैं।

  2. कॉन्फ़िगरेशन गुण => लिंकर => सामान्य => अतिरिक्त लाइब्रेरी निर्देशिका। यहाँ आप "lib" निर्देशिकाओं को सूचीबद्ध करते हैं जिन्हें आप खोजना चाहते हैं और उपलब्ध कराया गया है।

  3. कॉन्फ़िगरेशन गुण => लिंकर => इनपुट => अतिरिक्त निर्भरता। यहां आप स्पष्ट रूप से .lib फ़ाइलों को निर्दिष्ट करना चाहते हैं जो शामिल करना चाहते हैं।

प्रश्न हैं:

Q1: यदि आपने # 1 में हेडर फ़ाइल को निर्दिष्ट किया है और # 2 में देय है, तो आप # 3 में कुछ क्यों / कब निर्दिष्ट करना चाहेंगे?

Q2: मैं लोगों को # 3 में एक विशिष्ट डीबग या एक lib के रिलीज संस्करण सहित देखता हूं। क्या आप डीबग या # 3 में एक lib का रिलीज़ संस्करण निर्दिष्ट कर सकते हैं और अभी भी रिलीज़ या डीबग मोड में बना सकते हैं? आदर्श रूप से, पुस्तकालय डिबग / रिलीज के किस संस्करण को यहां प्रदान किया जाना चाहिए?


  1. कॉन्फ़िगरेशन गुण => C / C ++ => सामान्य => अतिरिक्त निर्देशिका शामिल करें। यहां आप "शामिल" निर्देशिकाओं को सूचीबद्ध करते हैं जिन्हें आप खोज और उपलब्ध कराना चाहते हैं।

यह संकलक को बताता है कि कोन कोष्ठक में संलग्न हेडर फाइलों को देखना है। यह प्रभावित करता है कि संकलक (या प्रीप्रोसेसर) यह कैसे काम करता है।

  1. कॉन्फ़िगरेशन गुण => लिंकर => सामान्य => अतिरिक्त लाइब्रेरी निर्देशिका। यहाँ आप "lib" निर्देशिकाओं को सूचीबद्ध करते हैं जिन्हें आप खोजना चाहते हैं और उपलब्ध कराया गया है।

यह लिंकर को बताता है कि कहां पुस्तकालयों की तलाश करें (यानी, कौन सी निर्देशिका में देखना है)। यह प्रभावित करता है कि लिंकर (संकलक के बजाय) अपना काम कैसे करता है।

  1. कॉन्फ़िगरेशन गुण => लिंकर => इनपुट => अतिरिक्त निर्भरता। यहां आप स्पष्ट रूप से .lib फ़ाइलों को निर्दिष्ट करना चाहते हैं जो शामिल करना चाहते हैं।

यह लिंकर बताता है कि पुस्तकालयों को उन निर्देशिकाओं में क्या देखना है। यह भी प्रभावित करता है कि लिंकर अपना काम कैसे करता है।

Q1: आम तौर पर यदि आप 2 का उपयोग करते हैं, तो आपको लगभग निश्चित रूप से 3 का भी उपयोग करने की आवश्यकता है। 3 यह बताता है कि लाइब्रेरी को किसके साथ जोड़ना है, और 2 यह बताता है कि उस लाइब्रेरी को कहां खोजना है। बेशक, यह एक से अधिक पुस्तकालय भी हो सकता है।

Q2: यदि कोई डीबग और रिलीज़ लाइब्रेरी दोनों प्रदान की जाती हैं, तो आप सामान्यतया डीबग बिल्ड और रिलीज़ संस्करण में डीबग संस्करण का उपयोग करना चाहते हैं। संवाद के ऊपरी-बाएँ कोने में आप कौन सा कॉन्फ़िगरेशन संशोधित करना चाहते हैं, इसका चयन करें। आमतौर पर आप डिबग और रिलीज़ दोनों के लिए निर्देशिका निर्दिष्ट करना चाहते हैं, लेकिन व्यक्तिगत लाइब्रेरीज़, एक डीबग के लिए और एक रिलीज़ के लिए निर्दिष्ट करें।


अपने Q2 के बारे में ...

3-पार्टी पुस्तकालयों के लिए, मैं विजुअल स्टूडियो बिल्ड कमांड मैक्रो चर $(Platform) और $(Configuration) लाभ उठाता हूं, जैसे कुछ:

Y:\dev3\cpp\cryptopp\cryptopp561\$(Platform)\Output\$(Configuration);...

इस तरह, आप केवल उसी सटीक रेखा को दर्ज कर सकते हैं और Visual Studio मैक्रो चर को प्रतिस्थापित कर सकते हैं और \cryptopp561\Win32\Output\Release\ या \cryptopp561\Win32\Output\Debug\ इस पर निर्भर करते हैं कि आपके पास कौन सा कॉन्फ़िगरेशन सक्रिय है। यह वास्तव में बहुत टाइपिंग को नहीं बचाता है लेकिन यह चीजों को लगातार और सटीक रखने में मदद करता है।


और बस स्पष्ट रूप से इंगित करने के लिए, आपको अपनी परियोजना के गुणों की सेटिंग में किसी भी .h फ़ाइलों का उपयोग नहीं करना होगा क्योंकि आप उन्हें स्पष्ट रूप से अपने स्रोत कोड में शामिल करते हैं, जो आपके पास पहले से मौजूद रास्तों के शीर्षकों की तलाश में हैं प्रदान की है।






linker