2010-02-16 15 views
7

मैं अपने कार्यक्रम के भीतर बढ़ावा regex का उपयोग करने के लिए समस्या मैं इस त्रुटि मिलती है कोशिश कर रहा हूँ ... केवल स्थापना कदम मैं जोड़ने के लिए था: "C: \ Program Files \ बढ़ावा \ boost_1_42" अतिरिक्त में निर्देशिकाएँ शामिल करें ...गंभीर त्रुटि LNK1104: कर सकते हैं फ़ाइल नहीं खोल 'libboost_regex-vc90-MT-GD-1_42.lib'

मैं VS2008 उपयोग कर रहा हूँ ...

इस लागू करने के लिए कोशिश कर रहा:

#include <iostream> 
#include <string> 
#include <boost/regex.hpp> 

using namespace std; 

int main() { 

    std::string s, sre; 
    boost::regex re; 
    boost::cmatch matches; 

    while(true) 
    { 
     cout << "Expression: "; 
     cin >> sre; 
     if (sre == "quit") 
     { 
     break; 
     } 

     cout << "String:  "; 
     cin >> s; 

     try 
     { 
     // Assignment and construction initialize the FSM used 
     // for regexp parsing 
     re = sre; 
     } 
     catch (boost::regex_error& e) 
     { 
     cout << sre << " is not a valid regular expression: \"" 
       << e.what() << "\"" << endl; 
     continue; 
     } 
     // if (boost::regex_match(s.begin(), s.end(), re)) 
     if (boost::regex_match(s.c_str(), matches, re)) 
     { 
     // matches[0] contains the original string. matches[n] 
     // contains a sub_match object for each matching 
     // subexpression 
     for (int i = 1; i < matches.size(); i++) 
     { 
      // sub_match::first and sub_match::second are iterators that 
      // refer to the first and one past the last chars of the 
      // matching subexpression 
      string match(matches[i].first, matches[i].second); 
      cout << "\tmatches[" << i << "] = " << match << endl; 
     } 
     } 
     else 
     { 
     cout << "The regexp \"" << re << "\" does not match \"" << s << "\"" << endl; 
     } 
    } 
} 

समस्या क्या प्रतीत होती है ? कोई अतिरिक्त सेटिंग्स बनाई जानी चाहिए?

उत्तर

14

कुछ बूस्ट पुस्तकालयों का निर्माण किया जाना है; यह उनमें से एक है। इस तरीके से उन्हें का निर्माण कर सकते है:

boost_build.bat नामक एक नई फ़ाइल बनाएँ और उसमें डाल अंदर:

bjam toolset=msvc-9.0 variant=release threading=multi link=static define=_SECURE_SCL=0 define=_HAS_ITERATOR_DEBUGGING=0 
bjam toolset=msvc-9.0 variant=debug threading=multi link=static 

नोट 9.0 वी.एस. 2008 (2010 के लिए 10.0, 2005 के लिए 8.0, 2003 के लिए 7.1, 6.0 को संदर्भित करता है के लिए, ठीक है, 6.0)। करने के लिए <boost_root>

  • जाएं

    1. निकालें build_boost.bat: एक बार जब आप इस किया है <boost_root>\tools\jam और चलाने build_dist.bat

    2. कॉपी <boost_root>\tools\jam\stage\bin.ntx86\bjam.exe<boost_root>

    3. को चलाने boost_build.bat

    4. पुस्तकालय में <boost_root>\stage\lib

    नोट स्थित हैं, यह मेरी अपनी विधि है। मैं प्यार होगा अगर कोई आसान तरीके से चिंतित हो, या बूस्ट से कुछ लिंक; ऐसा लगता है कि बूस्ट से उचित निर्माण निर्देश ढूंढना मुश्किल है।

    एक बार यह बनने के बाद, सुनिश्चित करें कि आप संकलक को यह बताएं कि पुस्तकालय आपके वीसी निर्देशिकाओं (लाइब्रेरी पथ) में कहां हैं; "<boost_root>\stage\lib" जोड़ें।


    bjam परिभाषित करता है में, मैं रिलीज के लिए _SECURE_SCL=0_HAS_ITERATOR_DEBUGGING=0 है। यह गति सुधार के लिए रिलीज बिल्ड में सभी इटरेटर जांच को अक्षम करता है।

  • +0

    अब भी वही त्रुटि ... 1> लिंक: गंभीर त्रुटि LNK1104: कर सकते हैं फ़ाइल नहीं खोली 'libboost_regex-vc90-MT-GD-1_42.lib' वास्तव में किया था के रूप में यू ने कहा ... – kaycee

    +0

    ठीक यह काम करता है .. लिंकर में जोड़ा गया "सी: \ प्रोग्राम फ़ाइलें \ boost \ boost_1_42 \ stage \ lib \ libboost_regex-vc90-mt-gd-1_42.lib" – kaycee

    +0

    '_HAS_ITERATOR_DEBUGGING' केवल डीबग बिल्ड पर लागू होता है। '_SECURE_SCL' के संबंध में, क्या आपको पुस्तकालयों को मिलाकर समस्याओं का सामना करना पड़ा है, जिन्होंने इसे पुस्तकालयों के साथ सक्षम किया है, जिसने इसे निष्क्रिय कर दिया है? –

    1

    क्या आपने बूस्ट के मल्टीथ्रेडिंग डीबग संस्करण को स्थापित किया है? यदि नहीं, तो कृपया ऐसा करें। अन्यथा अपने पुस्तकालय पथ (प्रोजेक्ट वरीयताओं में) की जांच करें ताकि इसमें त्रुटि संदेश में उल्लिखित फ़ाइल का पथ शामिल हो।

    2

    विंडोज़ पर, बाइनरी बाइनरी लाइब्रेरी को बढ़ावा देने का सबसे आसान तरीका installer from BoostPro consulting चलाने के लिए है। विजुअल स्टूडियो के अपने संस्करण का चयन करना सुनिश्चित करें और इंस्टॉल के दौरान regex लाइब्रेरी के लिए बॉक्स को चेक करें।

    +0

    डिफ़ॉल्ट स्रोत इंस्टॉल करना आसान होगा यदि वे मनमाने ढंग से गूंगा चीजें नहीं करते हैं एक बैट फ़ाइल बनाएं जिसे आप क्लिक करते हैं जो पूरी नौकरी नहीं करता है। ऐसा क्यों है कि प्रोग्रामर ऐसे टूल नहीं बना सकते हैं जो पहली बार काम करते हैं, और जो कम से कम आश्चर्य के सिद्धांत का पालन करते हैं। बूस्टप्रो के इंस्टॉलर ठीक हैं, मैं सिर्फ बढ़ावा वेबसाइट की ज़िप फ़ाइल डाउनलोड के बारे में शिकायत कर रहा हूं। ऐसा लगता है कि उन्हें सिर्फ उन्हें छोड़ देना चाहिए और एक वास्तविक इंस्टॉल पर एक लिंक डालना चाहिए। बेशक, बूस्टप्रो मर चुका है या मर रहा है और इसलिए यह जवाब अब चालू नहीं होगा। –

    0

    मुझे परिभाषित सेटिंग्स के बारे में निश्चित नहीं है, लेकिन मैं एमएसवीसी 9 के साथ निर्माण करने में सक्षम था।<boostroot>\bootstrap बैच फ़ाइल चलाकर 0, <boostroot>\project-config.jam फ़ाइल को निम्नानुसार संपादित करें।

    using mvsc 
    

    लिए:

    using msvc : 9.0 : cl.exe 
    

    तो .\b2 install चल रहा है और बढ़ावा हेडर और पुस्तकालयों का निर्माण किया और c:\boost करने के लिए स्थापित किया गया लाइन बदलें।

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

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