фатальная ошибка LNK1104: невозможно открыть файл 'libboost_regex-vc90-mt-gd-1_42.lib' - PullRequest
7 голосов
/ 16 февраля 2010

я пытаюсь использовать boost regex в моей программе проблема в том, что я получаю эту ошибку ... единственный шаг установки, который я сделал, был добавить: "C: \ Program Files \ boost \ boost_1_42" в каталоги дополнительных включений ...

Я использую 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;
      }
   }
}

в чем проблема? какие дополнительные настройки нужно сделать?

Ответы [ 4 ]

14 голосов
/ 16 февраля 2010

Некоторые библиотеки Boost должны быть собраны; Это одна из них. Вот как вы можете их построить:

Создайте новый файл с именем 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 относится к VS 2008. (10,0 для 2010, 8,0 для 2005, 7,1 для 2003, 6,0 для, ну, 6,0). После того как вы сделали это:

  1. Извлечение build_boost.bat до <boost_root>

  2. Перейти к: <boost_root>\tools\jam И запустить build_dist.bat

  3. Копировать <boost_root>\tools\jam\stage\bin.ntx86\bjam.exe в <boost_root>

  4. Пробег boost_build.bat

  5. Библиотеки расположены в <boost_root>\stage\lib

Обратите внимание, это мой собственный метод. Я бы полюбил , если бы кто-нибудь поделился более легким способом или какой-нибудь ссылкой из Boost; кажется, трудно найти правильные инструкции по сборке в Boost.

Как только он будет построен, убедитесь, что вы сообщили компилятору, где находятся библиотеки в ваших каталогах VC (пути к библиотекам); добавить "<boost_root>\stage\lib".


В определениях bjam у меня есть _SECURE_SCL=0 _HAS_ITERATOR_DEBUGGING=0 для выпуска. Это отключает все проверки итераторов в сборках Release для повышения скорости.

2 голосов
/ 18 сентября 2011

В Windows самый простой способ получить расширенные двоичные библиотеки - запустить установщик из BoostPro consulting . Обязательно выберите свою версию Visual Studio и установите флажок для библиотеки регулярных выражений во время установки.

1 голос
/ 16 февраля 2010

Установили ли вы многопоточную отладочную версию Boost? Если нет, пожалуйста, сделайте это. В противном случае проверьте путь к вашей библиотеке (в настройках проекта), чтобы он включал путь к файлу, указанному в сообщении об ошибке.

0 голосов
/ 23 июня 2012

Я не уверен насчет определенных настроек, но мне удалось получить повышение для сборки с MSVC 9.0, запустив пакетный файл <boostroot>\bootstrap, а затем изменив файл <boostroot>\project-config.jam следующим образом. Измените строку:

using mvsc

до:

using msvc : 9.0 : cl.exe

затем выполняется .\b2 install, а заголовки и библиотеки повышения были собраны и установлены в c:\boost.

...