एमएस Visual C++ 2010एक आश्रित स्थिर पुस्तकालय में बूस्ट कैसे लिंक करें
में मैं अपने समाधान जो बढ़ावा इस्तेमाल किया और पूरी तरह से काम किया है में एक भी सी ++ परियोजना था।
मैंने फिर इस परियोजना को स्थैतिक पुस्तकालय में बदलने और एक नई परियोजना बनाने का निर्णय लिया जो इस स्थिर पुस्तकालय पर निर्भर करता है।
अब, मेरी परिवर्तित स्थिर लाइब्रेरी त्रुटियों और चेतावनियों (कंपाइलर और लिंकर) के बिना बनाता है लेकिन नई परियोजना संकलित करती है लेकिन लिंक नहीं करती है।
मैं हो रही है:
1>LINK : fatal error LNK1104: cannot open file 'libboost_thread-vc100-mt-1_45.lib'
एक परीक्षण मैं इस पुस्तकालय के लिए लिंकर विकल्प के लिए पूर्ण निर्देशिका पथ जोड़ा के रूप में ... और फिर यह शिकायत की के बारे में
1>LINK : fatal error LNK1104: cannot open file 'libboost_date_time-vc100-mt-1_45.lib'
मैं अब जोड़ लिया है सभी पुस्तकालयों के लिए पूर्ण पथ और अब यह बनाता है और चलाता है।
मैं इस समाधान के साथ खुश नहीं हूँ क्योंकि:
- मैं नहीं पुस्तकालय के उपयोगकर्ताओं करना चाहते बढ़ावा में जोड़ने के बारे में चिंता करने की ज़रूरत।
- यह गंदा
मैं जानता हूँ कि एक जवाब एक DLL बनाने के लिए होगा, लेकिन वहाँ इस स्थिर करते हैं और मेरी स्थिर पुस्तकालय स्तर पर जोड़ने रखने के लिए एक तरीका है।
संपादित करें:
अगर मैं बढ़ावा libs की अनदेखी करने के .exe लिंकर बता स्पष्ट रूप से तो यह सब ठीक है, सिवाय इसके .exe बिल्कुल बढ़ावा के बारे में चिंता करने की ज़रूरत नहीं होना चाहिए।
/NODEFAULTLIB:"libboost_thread-vc100-mt-1_45.lib" /NODEFAULTLIB:"libboost_date_time-vc100-mt-1_45.lib"
को बढ़ावा देने के लिए लिंक करना होगा, इस उत्तर ने मुझे एक ठीक समाधान का नेतृत्व किया। मैंने BOOST_ALL_NO_LIB को परिभाषित किया और लाइब्रेरियन में स्थिर बूस्ट लाइब्रेरी मैन्युअल रूप से जोड़ा। My.exe प्रोजेक्ट को अब बूस्ट के बारे में जानने की आवश्यकता नहीं है, जो उद्देश्य था। यह एक दयालु बात है कि स्वचालित बूस्ट लिंकिंग डिफॉल्टलिब्स के माध्यम से प्रचारित प्रतीत होता है। – T33C
'बूस्ट के लिए विशेष नोट। थ्रेड' आपको 'BOOST_THREAD_USE_LIB' विकल्प का उपयोग करने की आवश्यकता हो सकती है। Http://shoddykid.blogspot.in/2008/07/getting-started-with-boost.html –
मुझे एक ही समस्या है ... मैंने इसे प्रीप्रोसेसर BOOST_ALL_NO_LIB का उपयोग करके हल किया और मेरे प्रोजेक्ट में स्पष्ट रूप से डी libs को जोड़ना बूस्ट libs की निर्देशिका और लिंकर-> इनपुट-> अतिरिक्त निर्भरता के लिए केवल उपयोग की गई libs जोड़ें। डिफॉल्ट रूप से बूस्ट हेडर हेडर में libs का नाम माउंट। यह preprocessor BOOST_LIB_DIAGNOSTIC का उपयोग करने के साथ सत्यापित कर सकते हैं। –