Я новичок в бусте, и решил попробовать его с некоторыми реалистичными сценариями развертывания для .dll, поэтому я использовал следующую команду для компиляции / установки библиотек:
.\bjam install --layout=system variant=debug runtime-link=shared link=shared
--with-date_time --with-thread --with-regex --with-filesystem
--includedir=<my include directory> --libdir=<my bin directory> > installlog.txt
Это, похоже, работает, но моя простая программа (взято прямо со страницы "Начало работы") не работает:
#include <boost/regex.hpp>
#include <iostream>
#include <string>
// Place your functions after this line
int main()
{
std::string line;
boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" );
while (std::cin)
{
std::getline(std::cin, line);
boost::smatch matches;
if (boost::regex_match(line, matches, pat))
std::cout << matches[2] << std::endl;
}
}
Сбой из-за следующей ошибки компоновщика:
fatal error LNK1104: cannot open file 'libboost_regex-vc80-mt-1_42.lib'
Я уверен, что .lib и .dll находятся в этом каталоге и названы так, как я хочу, чтобы они были (то есть: boost_regex.lib и т. Д., Все не версионно, как говорит система --layout =) , Так почему же он ищет версионный тип? И как мне заставить его искать неверсионный тип библиотеки?
Я пробовал это с более "нормальными" вариантами, такими как ниже:
.\bjam stage --build-type=complete --with-date_time --with-thread --with-filesystem --with-regex > mybuildlog.txt
И это прекрасно работает. Я удостоверился, что мой компилятор увидел каталог "stage \ lib", и он скомпилировался и работал нормально, кроме того, что среда смотрела в правильный каталог lib. Но когда я убрал эти «тестовые» каталоги и захотел использовать эти другие (неверсированные), то это не удалось.
Я нахожусь под VS2005 здесь на XP. Есть идеи?