2009-11-26 8 views
6

मैंने Launchy के लिए स्रोत डाउनलोड किया है और इसे विजुअल स्टूडियो 2005 में बनाने की कोशिश कर रहा हूं। लॉन्च्य प्रोजेक्ट वीसी 7 का उपयोग करके बनाया गया है, इसलिए मुझे प्रोजेक्ट फाइलों को वीसी 8 में अपडेट करना पड़ा और यह प्रक्रिया अच्छी तरह से चल रही थी । हालांकि, लॉन्ची Boost 1.33.1 libs का भी उपयोग करता है और जो मैंने बनाया है वह बूस्ट 1.41.0 libs (अधिक हालिया libs बनाने के लिए बूस्ट बनाने के लिए बढ़ावा देता है), इसलिए मैंने अपने नए को इंगित करने के लिए प्रोजेक्ट को भी अपडेट किया Libs स्थापित बूस्ट। अब मैं निम्नलिखित लिंकर त्रुटि मिलती है:बूस्ट लिब लिंकर त्रुटि को बढ़ावा दें दृश्य सी ++

fatal error LNK1104: cannot open file 'libboost_regex-vc80-mt-sgd-1_41.lib' 

मैं बूस्ट lib निर्देशिका और सबसे निकटतम मिलान कि मैं मिल सकता है में एक नज़र ...

libboost_regex-vc80-mt-gd-1_41.lib 

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

एक प्रयोग के रूप में, मैंने रेगेक्स lib की एक प्रति बनाई है जो मैंने किया है और इसका नाम बदलकर लिंकर की तलाश में है। यही कारण है कि मुझे निम्नलिखित जैसे प्रतीकों पहले से ही msvcrtd.lib में परिभाषित किया जा रहा है, के बारे में लिंकर त्रुटियों की एक लंबी सूची देता है:

error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" ([email protected]@[email protected]@@Z) already defined in libcmtd.lib(typinfo.obj) 

मैं बूस्ट 1.33.1 libs का निर्माण और उस पर मेरी Launchy प्रोजेक्ट फाइल बात करने की कोशिश करेंगे बजाय। लेकिन मैं अभी भी जानना चाहता हूं कि मेरे बूस्ट 1.41.0 libs के साथ क्या गलत है।

संपादित: मैं एक संदर्भ in the Boost docs क्या 'एस' libs हैं पाया:

Use this library when linking statically to the C++ standard library and compiler runtime support libraries.

तो ऐसा लगता है कि 'एस' libs की तरह सही हैं। अब मुझे यह समझना है कि उन्हें कैसे बनाया जाए।

समाधान: मैं निम्नलिखित कमांड लाइन के साथ गायब बूस्ट libs बनाने में सक्षम था।

bjam --build-type=complete msvc stage 

मैंने भाग लिया कि पहले से ही बूस्टर में बूस्ट्रैप.बैट चला रहा है जहां बूस्ट रहता है।

+0

यदि आप उन्हें बनाने के साथ गड़बड़ नहीं करना चाहते हैं, तो आप उन्हें यहां प्राप्त कर सकते हैं: http://boost.teeks99.com – teeks99

उत्तर

10

अंतर clearly described in Boost docs है - "एमटी-एसजीडी" का अर्थ है "डीबग, स्थिर रूप से जुड़े रनटाइम पुस्तकालय, बहुप्रचारित, डीबग प्रतीकों के साथ"। "एमटी-जीडी" वही है, लेकिन गतिशील रूप से जुड़े रनटाइम पुस्तकालयों का उपयोग (यानी libcmtd.lib के बजाय msvcrtd.lib)।

या तो डायनामिक सीआरटी लिंकिंग (यानी/एमटीडी के बजाय एमडीडी) का उपयोग करने के लिए प्रोजेक्ट सेटिंग्स को बदलें, या स्थैतिक लिंकिंग का उपयोग करके बूस्ट बनाएं - मिश्रण करना ठीक से काम नहीं करेगा।

3

बढ़ावा देने के लिए आपने किस आदेश का उपयोग किया था? बिल्ड-टाइप = पूर्ण निर्दिष्ट करने का प्रयास करें। आम तौर पर इसे भी libs बनाना चाहिए।

+0

मैं इसे आज़मा दूंगा, धन्यवाद। मुझे लगता है कि मैंने इसे बिल्ड-टाइप निर्दिष्ट किए बिना बनाया है। – Parappa

+0

यह काम कर रहा है! एक बार फिर धन्यवाद। – Parappa

+0

यह मेरे लिए काम नहीं करता है। एस पुस्तकालयों का निर्माण नहीं किया गया है। बढ़ावा 1.54 – Max