IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

cannot open file 'libboost_regex-vc120-mt-s-1_55.lib'


Sujet :

Boost C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 137
    Points
    137
    Par défaut cannot open file 'libboost_regex-vc120-mt-s-1_55.lib'
    Bonjour,

    j'utilise Visual Studio13, j'ai compilé boost 1.55.0 tous s'est bien passé, j'ai ajouté include path et libray path dans mon projet,

    je suis sous windows 7 x64.

    en utilisant les regex il ne trouve pas la librairie "cannot open file 'libboost_regex-vc120-mt-s-1_55.lib' ".

    quand je regarde dans le répertoire stage/lib j'ai :


    - libboost_regex-vc120-mt-1_55.lib
    - libboost_regex-vc120-mt-gd-1_55.lib

    mais je n'ai pas la librairie libboost_regex-vc120-mt-s-1_55.lib avec le "s".

    la ligne de compilation que j'ai utilisé est la suivante:

    bjam toolset=msvc-12.0 variant=debug,release threading=multi link=static

    J'ai du oublié un paramètre de compilation mais je ne voit pas lequel ou bien un paramètre dans les propriétés du projet au niveau du préprocesseur.

    Ou bien ce n'est pas la version 64bit peut etre.

    Quelqu'un aurait une idée ?

    Merci de votre aide.

    EDIT:
    J'ai pu récupérer la version 64 bit : boost_1_55_0-msvc-12.0-64.exe qui installe les binaires .lib mais j'ai des unresolved external symbol:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Error	3	error LNK2001: unresolved external symbol "private: class boost::basic_regex<char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > > & __thiscall boost::basic_regex<char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > >::do_assign(char const *,char const *,unsigned int)" (?do_assign@?$basic_regex@DU?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@boost@@AAEAAV12@PBD0I@Z)	D:\donnees\dev\VS2013\chatlog\chatmanager\TextViewRegex.obj
     
    Error	4	error LNK2001: unresolved external symbol "public: bool __thiscall boost::re_detail::perl_matcher<class std::_String_const_iterator<class std::_String_val<struct std::_Simple_types<char> > >,class std::allocator<struct boost::sub_match<class std::_String_const_iterator<class std::_String_val<struct std::_Simple_types<char> > > > >,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > >::match(void)" (?match@?$perl_matcher@V?$_String_const_iterator@V?$_String_val@U?$_Simple_types@D@std@@@std@@@std@@V?$allocator@U?$sub_match@V?$_String_const_iterator@V?$_String_val@U?$_Simple_types@D@std@@@std@@@std@@@boost@@@2@U?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@re_detail@boost@@QAE_NXZ)	D:\donnees\dev\VS2013\chatlog\chatmanager\TextViewRegex.obj
     
     
    Error	5	error LNK2001: unresolved external symbol "private: void __thiscall boost::re_detail::perl_matcher<class std::_String_const_iterator<class std::_String_val<struct std::_Simple_types<char> > >,class std::allocator<struct boost::sub_match<class std::_String_const_iterator<class std::_String_val<struct std::_Simple_types<char> > > > >,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > >::construct_init(class boost::basic_regex<char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > > const &,enum boost::regex_constants::_match_flags)" (?construct_init@?$perl_matcher@V?$_String_const_iterator@V?$_String_val@U?$_Simple_types@D@std@@@std@@@std@@V?$allocator@U?$sub_match@V?$_String_const_iterator@V?$_String_val@U?$_Simple_types@D@std@@@std@@@std@@@boost@@@2@U?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@re_detail@boost@@AAEXABV?$basic_regex@DU?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@3@W4_match_flags@regex_constants@3@@Z)	D:\donnees\dev\VS2013\chatlog\chatmanager\TextViewRegex.obj
    Le répertoire des includes dans mon cas pointent vers :
    D:\donnees\dev\library\boost_1_55_0

    et pour les librairies vers:
    D:\donnees\dev\library\boost_1_55_0\stage\lib

    J'ai essayé d'ajouter dans le préprocessor au niveau des propriétés du projet "BOOST_MSVC " mais ca ne donne rien.

    Merci de votre aide.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 137
    Points
    137
    Par défaut
    Dans les propriété du projet au niveau de VC++ Directory j'ai mis le chemin des includes et le chemin des librairies.

    faut-il que je mette aussi au niveau du linker le chemin vers le répertoire des librairies ?

    dois-je entrer manuellement au niveau de input dans les propriétés du linker le nom de la librairie, par ex: boost_regex-vc120-mt-1_55.lib ?

    Dans les propriétés du projet au niveau de code génération j'ai Multi-Threaded (/MT) je suppose que je dois utiliser les librairies boost avec le -mt ?

    Merci de votre aide.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 137
    Points
    137
    Par défaut
    J'ai recompilé boost, j'ai donc toutes les librairies mais j'ai toujours mon probleme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Error	1	error LNK2001: unresolved external symbol "private: class boost::basic_regex<char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > > & __thiscall boost::basic_regex<char,struct boost::regex_traits<char,class boost::w32_regex_traits<char> > >::do_assign(char const *,char const *,unsigned int)" (?do_assign@?$basic_regex@DU?$regex_traits@DV?$w32_regex_traits@D@boost@@@boost@@@boost@@AAEAAV12@PBD0I@Z)
    Je suppose que quelqu'un a deja eu ce probleme ?

    j'ai mis tous les chemins inimaginable vers boost et regex, et ca ne marche toujours pas.

    Merci de votre aide.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 137
    Points
    137
    Par défaut
    Voila ca fonctionne, il fallait inclure les sources qui se trouvent dans libs/regex/src.

    Sur tous les tutos que j'ai pu lire ce n'était pas indiqué, il serait bien de le mettre dans vos tutos, d'autant plus que ce type d'erreur j'ai du le voir au moins 300 fois sur google, et jes uis tombé sur un post

    qui proposait de faire cela. En tous cas pour la version static de boost.

    et en fait d'apres ce que j'ai pu lire sur les différents tutos il ne suffit pas de mettre les chemins include et librairies dans visual studio, il faut indiquer aussi manuellement la lib dans input et mettre de nouveau le chemin dans le linker.

    Merci.

  5. #5
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 265
    Points : 6 686
    Points
    6 686
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    reprenons depuis le début.
    Le ligne de commande que tu utilises pour compiler boost est correcte. En revanche, tu sembles avoir oublié la première étape, qui consiste à configurer boost: .\bootstrap.bat (sur Windows), or ./bootstrap.sh (sur linux). Cette première étape est primordiale, car non seulement elle te permet d'éviter de configurer ton éditeur de lien, car elle le fait à ta place, mais surtout elle le fait bien.
    Autrement dit, si tu fais bien le bootstrap puis le build, tu n'aura pas à configurer ton projet. Enfin, il faudra juste lui dire où trouver les en-têtes (fichiers .hpp), mais il trouvera lui-même les .lib.
    Donc concrètement, ce que je te conseille, c'est de:
    1. lancer le bootstrap
    2. re-compiler boost (juste relancer la ligne de commande)
    3. nettoyer ton projet vstudio, c'est à dire: supprimer tout ce qui fait référence à boost dans la partie "linker", et ne laisser que le chemin vers la racine de boost dans le "additional include directories".

  6. #6
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 265
    Points : 6 686
    Points
    6 686
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par andromeda Voir le message
    Voila ca fonctionne
    Ha ok, oublie mon précédent message alors.


    Citation Envoyé par andromeda Voir le message
    d'apres ce que j'ai pu lire sur les différents tutos il ne suffit pas de mettre les chemins include et librairies dans visual studio, il faut indiquer aussi manuellement la lib dans input et mettre de nouveau le chemin dans le linker.
    C'est faux. Je travaille quotidiennement sur un projet qui utilise boost::regex, et la configuration du projet de visual studio traite regex de la même façon que les autres libs de boost, c'est à dire qu'on ne précise aucun chemin autre que la racine de boost pour les includes.

    Par contre il y a un truc que je ne comprend pas, c'est que nous utilisons bien boost en static (une fois le projet compilé, on a pas besoin des dlls de boost pour que ça marche), mais les .lib qu'on utilise ne sont pas ceux avec le 's' dedans.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 137
    Points
    137
    Par défaut
    - J'ai bien lance le bootstrap avant d'envoyer la ligne de commande pour la compilation
    - dans mon cas si je ne met pas la lib avec le "s" ca ne fonctionne pas, ptut etre une option du compilateur vc12.
    - si je met dans les proprietes de configuration le chemin de boost ca ne fonctionnait pas, je suis obligé de mettre le chemin de la lib dans les propriétés du link
    ainsi que le nom de la lib dans input.

    Je n'utilise pas de dll, uniquement en static.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 137
    Points
    137
    Par défaut
    en effet en mettant le chemin dans VC++ directory pour la lib ca fonctionne, je ne suis pas obligé de mettre le chemin dans le linker et pareil pour les includes.

    et la je ne comprend plus rien car j'ai tout enlevé sauf le path du boost include et lib et tout fonctionne.

    peut etre fallait-il relancer visual studio pour prendre en compte les path apres la compilation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Cannot open file opencv_calib3d246d.lib
    Par klelu dans le forum OpenCV
    Réponses: 4
    Dernier message: 21/11/2013, 13h35
  2. Error LNK1104: cannot open file 'cv240d.lib'
    Par Diouk5 dans le forum OpenCV
    Réponses: 4
    Dernier message: 29/05/2012, 11h48
  3. Réponses: 1
    Dernier message: 23/01/2008, 15h35
  4. Cannot open/read repomd.xml file for repository: fedora
    Par hic73 dans le forum RedHat / CentOS / Fedora
    Réponses: 3
    Dernier message: 13/09/2007, 17h20
  5. Cannot open include file : un grand classique
    Par mamok dans le forum MFC
    Réponses: 3
    Dernier message: 19/12/2005, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo