2010-06-02 11 views
5

भी निर्दिष्ट नहीं किया है, मैं जीसीसी के बजाय एमएसवीसी 2010 के साथ अपना आवेदन बनाने की कोशिश कर रहा हूं। जीसीसी के साथ सब कुछ ठीक काम करता है। मेरा ऐप boost_system और boost_thread लाइब्रेरी का उपयोग करता है। मैं "प्रणाली" लेआउट, इसका मतलब है कि पुस्तकालयों सिर्फ libboost_system.lib नाम हैं (और libboost_system_compiler_threading_version_wtf_snafu.lib नहीं) में VC2010 साथ बढ़ावा बनाया libs सी में रहते हैं: \ बूस्ट \ lib, Makefile निर्दिष्ट करतावीसी ++ 2010 बूस्ट लिबररीज़ को लिंक करना चाहता है, मैंने

LFLAGS  = /NOLOGO /INCREMENTAL:NO /SUBSYSTEM:CONSOLE 
LIBS   = /LIBPATH:C:/Boost/lib libboost_system.lib libboost_thread.lib Ws2_32.lib 

जब लागू nmake यह संकलित, लेकिन जब यह इस्तीफा लिंक करने के लिए

LINK : fatal error LNK1104: cannot open file 'libboost_date_time-vc100-mt-1_43.lib 

मैं गंभीरता से मतलब है के साथ की कोशिश कर रहा, WTF? मैंने libboost_systen.lib और libboost_thread.lib को जोड़ने के लिए कहा है कि यह libboost_data_time को जोड़ने का प्रयास कैसे करता है और यह क्यों लगता है कि मैंने "टैग किए गए" लेआउट में libs बनाया है ?? मैं एमएसवीसी को स्मार्ट होने की कोशिश कैसे कर सकता हूं और अनुमान लगा सकता हूं कि मैं लिंक करना चाहता हूं?

धन्यवाद, फिलिप

उत्तर

5

यह स्वत: जोड़ने के लिए संगत compilers से बूस्ट libs की एक विशेषता है।

(उन जटिल पुस्तकालय नाम सूत्रण और लिंकिंग विकल्प है कि मंच पर उपलब्ध हैं के असंख्य कवर, वहाँ विंडोज पर कि सम्मेलन ... उपयोग करने के लिए अच्छा कारण हैं)

अधिक जानकारी यहां:

http://www.boost.org/doc/libs/1_33_1/more/getting_started.html#auto-link

मुझे हाल के संस्करण के लिए कोई पृष्ठ नहीं मिल रहा है, लेकिन मेरा मानना ​​है कि BOOST_ALL_NO_LIB और संबंधित विकल्प अभी भी 1.43 में मान्य हैं।

+0

हे, जिसने परिभाषित किया चाल है। धन्यवाद। – Philipp

1

मान लें कि आप ऑटो-लिंकिंग कर रहे हैं (यानी आपने BOOST_ALL_DYN_LINK या लाइब्रेरी विशिष्ट समकक्षों को परिभाषित किया है)।

BOOST_AUTO_LINK_NOMANGLE 

सही पुस्तकालय के नाम से जोड़ने के लिए:

लेआउट 'सिस्टम' के लिए आप पूर्वप्रक्रमक मैक्रो निर्धारित किया है।

लेआउट के लिए 'tagged' आप पूर्वप्रक्रमक मैक्रो निर्धारित करने के लिए है:

BOOST_AUTO_LINK_TAGGED 

सही पुस्तकालय के नाम से जोड़ने के लिए।

मुझे नहीं पता कि आप कुछ पुस्तकालयों के लिए यह ओवरराइड कर सकते हैं और दूसरों के लिए डिफ़ॉल्ट रख सकते हैं। यह एक बहुत ही बोझिल सेटअप होगा जो मैं कल्पना करता हूं।

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