2017-01-14 9 views
0

J'utilise boost 1.61.0 avec cl 19 (visual studio 2015). J'ai construit des bibliothèques de boost à partir de la documentation de démarrage avec la ligne de commande bootstrap et .\b2. Ceci a fait le répertoire d'étape avec quelques bibliothèques de préfixes de vc14.Boost erreur de lien regex avec cl 19

Mais quand j'ai essayé de compiler obtenir le programme début regex

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

avec cette ligne de commande paramètres du compilateur:

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

Je reçois cette erreur:

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

Quel est le problème avec mon essai?

EDIT: J'ai changé la compilation ligne de commande:

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

Maintenant, je reçois cette erreur:

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

Répondre

0

J'ai trouvé la solution.

J'avais construit des bibliothèques de boost avec bootstrap et .\b2 commandes. Il a construit mt (multithread) et gd (debug) bibliothèques seulement.

Pour les bibliothèques de liens statiques (s), j'ai essayé .\b2 runtime-link=static et ce fichier buit 'libbosst_regex-vc140-mt-s-1_61.lib' et maintenant tout est OK. J'ai trouvé le point what's the difference between mt-gd and mt-s library.