2010-10-23 9 views
5

मेरे पास कुछ बाहरी निर्भरताएं हैं जो मेरे सी ++ प्रोग्राम, जैसे बूस्ट या अन्य पुस्तकालयों के साथ लोड करने के लिए हैं। यदि उन लोगों के डीएलएल $ PATH में नहीं हैं, एक बार जब मैं अपना प्रोग्राम चलाता हूं तो मुझे "डीएलएल लोड नहीं किया जा सकता" त्रुटि संदेश मिलता है। उनको बनाने के लिए। मेरे प्रोग्राम को चलाने पर डीएलएल लोड किया जा सकता है, मुझे पुस्तकालय निर्देशिका में उन पथों को जोड़ने की आवश्यकता है। उदाहरण के लिए:VIsual C++ एक्सप्रेस 2010 प्रोजेक्ट में रनटाइम DLL का पथ कैसे जोड़ें?

PATH=$PATH;c:\boost\lib 

यह काम करता है, लेकिन मैं इस बेवकूफ समाधान है, जो वैश्विक वातावरण गंदा बनाता है पसंद नहीं है। इसके अलावा, मेरे पास जोड़ने के लिए बहुत अधिक निर्भरताएं हैं I इस तरह से करने की सबसे बुरी बात यह है कि, जब आपके पास निर्भरता के अलग-अलग संस्करण होते हैं, तो यह बहुत परेशान होता है। जैसे यहाँ आप एक परियोजना एक boost1.3.7 पर निर्भर करता है है, यह विकसित करने के लिए, आप आप एक अन्य परियोजना बी जो boost1.4.4 पर निर्भर करता है, ओह, महान विकसित करने की आवश्यकता पथ

PATH=$PATH;c:\boost1.3.7\lib 

बदलना होगा और, यहाँ। ... बदल चर

PATH=$PATH;c:\boost1.4.4\lib 

आप देख सकते हैं यह एक बहुत अच्छा समाधान नहीं है .... आप लिंक करना एक से अधिक पुस्तकालय है, तो है कि एक असली बुरा सपना हो जाएगा। मैं चाहता हूं कि वीसी ++ प्रोजेक्ट की संपत्ति को संशोधित करना है, मेरे प्रोग्राम को चलाने/डिबग करने पर केवल पथ पथ को केवल पथ में जोड़ें। मैं

VC++ Directories -> Executable Directories 

के लिए पथ को जोड़ने की कोशिश की है लेकिन ऐसा लगता है कि निर्माण, चलाने के लिए नहीं करने के लिए पथ है। तो, मैं अपने प्रोग्राम को सही तरीके से चलाने के लिए अपने वीसी ++ प्रोजेक्ट में पथ कैसे जोड़ सकता हूं?

उत्तर

1

यह सुनिश्चित नहीं है कि आप इसे 'बेवकूफ' समाधान के रूप में पथ में क्यों जोड़ते हैं? यह तृतीय पक्ष libs के लिए एक बहुत ही आम समाधान है। क्या होगा यदि आप अपने एप्लिकेशन को फिर से वितरित करना चाहते हैं, या इसे वीएस के तहत चलाने के बजाए इसे कमांड लाइन से चलाएं?

अगर आप वैश्विक पथ को संशोधित नहीं पर जोर देते हैं, तो आप भी कोशिश कर सकते हैं:

  • (निष्पादन की निर्देशिका के लिए आवश्यक DLLs जोड़ने = बहुत गंदा और त्रुटि प्रवण एकाधिक संस्करणों और/या एकाधिक के मामले में पथ बनाएं)
  • पुन: नियोजित डीएलएस को% WINDIR%/system32 (ऊपर जैसा ही टिप्पणी)
  • एक बैच फ़ाइल बनाएं जो आपके इच्छित पथ को सेट करता है, फिर VS को आमंत्रित करें। अब वीएस आपके द्वारा सेट किए गए पथ का उपयोग करता है, जबकि वैश्विक पाथ अपरिवर्तित बनी हुई है।
  • कहां WinSxS फ़ोल्डरों में स्थापित डीएलएस प्राप्त करने का प्रयास कर सकता है, लेकिन यह इतना आसान नहीं है। (for example)

btw संस्करण समस्या को हल करने के लिए, सिमलिंक का उपयोग करें:/बढ़ावा अपने पथ पर:

mklink /J c:/boost c:/boost1.3.7 

तो जोड़ने सिर्फ सी। यदि संस्करण बदलता है, तो पर्यावरण के बजाय सिम्लिंक बदलें

संबंधित मुद्दे