Ошибка компоновщика регулярных выражений Boost с cl 19

Использую boost 1.61.0 с cl 19 (visual studio 2015). Я создал библиотеки Boost из начальной документации с командной строкой bootstrapи .\b2. Это создало каталог сцены с некоторыми библиотеками префиксов vc14.

Но когда я попытался скомпилировать начальную программу регулярного выражения

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

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;
    }
}

с этими настройками компилятора командной строки:

cl main.cpp -I %BOOST_ROOT% -L %BOOST_LIB_14% /EHsc

Я получаю эту ошибку:

Link:: fatal error LNK1181: cannot open input file 'C:\local\boost_1_61_0\stage\lib.obj

Что не так с моей попыткой?

EDIT: я изменил компиляцию командной строки на:

cl main.cpp /I %BOOST_ROOT% /link /LIBPATH:%BOOST_LIB_14% /EHsc

Теперь я получаю эту ошибку:

LINK: fatal error LNK1104: cannot open file 'libbosst_regex-vc140-mt-s-1_61.lib'

person JalalJaberi    schedule 14.01.2017    source источник


Ответы (1)


Я нашел решение.

Я создал библиотеки повышения с помощью команд bootstrap и .\b2. Он построил только библиотеки mt (многопоточность) и gd (отладка).

Для библиотек со статической ссылкой (s) я попробовал .\b2 runtime-link=static и этот файл buit 'libbosst_regex-vc140-mt-s-1_61.lib', и теперь все в порядке.

Я нашел точку в в чем разница между mt-gd и библиотека mt-s.

person JalalJaberi    schedule 15.01.2017