фатальная ошибка LNK1104: не может открыть файл 'libboost_regex-vc90-mt-gd-1_42.lib'

я пытаюсь использовать повышение 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;
      }
   }
}

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

7
задан kaycee 16 February 2010 в 16:00
поделиться

2 ответа

Необходимо создать некоторые библиотеки 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 в

  2. Перейдите в: \ tools \ jam И запустите build_dist.bat

  3. Скопируйте \ tools \ jam \ stage \ bin.ntx86 \ bjam.exe в

  4. Выполнить boost_build.bat

  5. Библиотеки находятся в \ stage \ lib

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

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


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

14
ответ дан 6 December 2019 в 11:48
поделиться

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

1
ответ дан 6 December 2019 в 11:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: