2014-04-02 7 views
9

जब मैं विजुअल स्टूडियो 2012 का उपयोग ऑटो-लिंकिंग के साथ करता हूं, तो मुझे मैन्युअल रूप से बूस्ट/पीओसीओ/पायथन लाइब्रेरी जोड़ने की आवश्यकता नहीं होती है, उन्हें स्वचालित रूप से जोड़ा जाएगा। और अगर मैं किसी भी पुस्तकालय याद आती है, मुझे लगता है कि जैसे संदेश मिलता है:ऑटो-लिंकिंग को बढ़ावा देने से चुनाव कैसे बढ़ता है?

LINK : fatal error LNK1104: cannot open file 'libboost_system-vc110-mt-1_55.lib'

लेकिन यह कैसे जानता है जो फ़ाइल मैं लिंक करना चाहते हैं? हो सकता है कि मैं boost_system-vs110-mt-1_55.lib का उपयोग करके गतिशील रूप से लिंक करना चाहता हूं, या मुझे gd या sgd नाम से एक चाहिए?

यह कैसे पसंद करता है?

समस्या यह है कि मेरा प्रोग्राम libboost_ ... (यानी स्थैतिक) पुस्तकालयों की तलाश में है, जब सिस्टम, धागे और आदि की खोज होती है, लेकिन यह पायथन के लिए boost_ (यानी गतिशील) चाहता है, और मैं समझ में नहीं आता क्यूं कर?

+0

यदि आप "ऑटो-लिंकिंग" द्वारा डीएलएस का उपयोग करने का जिक्र कर रहे हैं, तो यह आपको .libs को जोड़ने से मुक्त नहीं करता है। रनटाइम पर डीएलएस का उपयोग करने के लिए, आपको संकलन समय पर उन डीएलएस की सामग्री को जानना होगा, और यही वह जगह है जहां .lib फ़ाइलें खेलती हैं। किस संस्करण, रनटाइम और एमटी/एमडी (आप किस प्रकार का रनटाइम मॉड्यूल संकलित कर रहे हैं, इसके बारे में आप इसे अपने प्रोजेक्ट के लिए वीएस 'विकल्पों में देख सकते हैं), आपको सबसे पहले अपने प्रोजेक्ट को तय करने का निरीक्षण करना चाहिए। –

+0

हां, मैं समझता हूं कि मिनजीडब्लू का उपयोग करके उस परियोजना को संकलित करने के लिए खुद को कैसे चुनना है, मुझे कोई समस्या नहीं है। लेकिन विजुअल स्टूडियो खुद को चुनता है, इसलिए मैं नहीं चुन सकता, यह मेरे लिए बनाता है। और मुझे आश्चर्य है कि ऐसा क्यों पसंद है। मेरा सवाल वास्तव में है - कैसे विजुअल स्टूडियो इसे पसंद करता है और मैं इसे कैसे प्रबंधित कर सकता हूं? – Arkady

+0

आप इसे वीएस से भी नियंत्रित कर सकते हैं, लिंकर-> सामान्य-> लिंकिंग-> सामान्य-> अतिरिक्त लिंकिंग निर्देशिकाओं (आईआईआरसी) –

उत्तर

5

विजुअल स्टूडियो #pragma लिंकर विकल्पों को सेट करने के लिए स्रोत कोड में निर्देशों की अनुमति देता है। "ऑटो-लिंकिंग" के लिए, बूस्ट मौजूदा मैक्रो के संयोजन में इन #pragma's का उपयोग करता है।

विशेष रूप से, ऐसा लगता है कि आप BOOST_ALL_DYN_LINK मैक्रो की तलाश में हैं।

+0

जैसा कि मैं बूस्ट/सिस्टम/config.hpp से समझता हूं, यदि BOOST_ALL_DYN_LINK परिभाषित नहीं किया गया है, तो मुझे सभी पुस्तकालयों को स्थिर के रूप में लिंक करना होगा, जो अभी पाइथन को छोड़कर सभी के लिए काम करता है । मैं वास्तव में सभी पुस्तकालयों को स्थिर के रूप में लिंक करना चाहता हूं, ताकि ध्वज बिल्कुल वही है जो मुझे चाहिए, और डिफ़ॉल्ट मैक्रोज़ पर्याप्त है। लेकिन अगर मैं इसे मैन्युअल रूप से जोड़ता हूं (BOOST_ALL_STATIC_LINK), तो यह काम नहीं करता है। किसी भी तरह मेरा संकलक सोचता है कि boost.python स्थिर नहीं हो सकता है। और यह गतिशील पायथन पुस्तकालय के लिए पूछता है भले ही ध्वज BOOST_ALL_STATIC_LINK मौजूद हो। और मुझे नहीं पता कि इसे ठीक करने के लिए कहां देखना है। – Arkady

+0

@ अर्कडी: विशिष्ट होने का प्रयास करें, 'BOOST_PYTHON_STATIC_LIB' का उपयोग करें – MSalters

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