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 :

Mise à jour 1.42 -> 1.54


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut Mise à jour 1.42 -> 1.54
    Je travaille avec boost 1.42 sous VS2005 et VS2010.

    J'ai voulu utiliser property_tree pour la 1ère fois et, patatras, une simple instanciation ne compile pas:
    boost::property_tree::ptree pt;//ERROR

    Il s'avère que property_tree ne compilait pas sous VS2010 avant une certaine version, donc je décide de faire la mise à jour et passer à boost 1.54.
    J'ai juste remplacé le contenu du répertoire include qui contenait la 1.42. Très bien, ça compile, mais ça ne link plus

    Un peu de recherche pour découvrir que maintenant il y a un auto_link sous windows avec VS (mais j'ai rien demandé moi, pourquoi imposer cela ?).
    C'est un peu inutile je trouve si on n'utilise que les headers et qu'on n'a pas besoin des librairies qui nécessitent une compilation (c'est comme ça qu'on m'a vendu boost à l'époque: rien à compiler, #include du nécessaire et c'est tout !).

    Bref, encore un peu de recherche et je déclare la macro BOOST_ALL_NO_LIB=1 dans les projets pour désactiver l'auto_link. Pas mieux
    Faut-il VRAIMENT compiler les librairies de boost maintenant ?
    C'est fini le principe du "#include only" ?
    Merci.

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    Bonjour,

    Normalement non, l'auto-link ne cherche que les libs dont tu as utilisé un header qui peut en avoir besoin (c'est un #pragma comment). Ça concernait quel lib l'erreur de link ? Et tu utilises quoi comme en-tête de boost ?

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut
    unordered_set
    unordered_map
    preprocessor
    Vraiment pas grand chose donc...

    Le simple remplacement des header 1.42 par 1.54 génère 2 erreurs au link ("unresolved blablabla").
    Seul changement (nécessaire) dans le projet: BOOST_ALL_NO_LIB=1


    Et puis j'ai ajouté
    property_tree/ptree
    property_tree/xml_parser
    property_tree/json_parser
    Toujours avec BOOST_ALL_NO_LIB=1, des 10zaines d'erreurs au link cette fois (encore des "unresolved blablabla").

    Bref, je comprends pas...

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    Oui, mais c'est quoi après les "unresolved" exactement, qu'est ce qu'ils essaient de linker/utiliser ? Et quel sont exactement les include que tu as utilisé ? Si tu utilises des includes "génériques" qui en incluent plein d'autre, ils peuvent inclurent des fichiers activant l'auto-link.

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut
    Bon, je ne retourne au boulot que lundi.

    En attendant j'ai une ancienne version du prg sur mon pc à la maison (avec VS2010 seul).
    Il est avec boost 1.47, uniquement les headers: ras.

    Je viens de remplacer les headers par boost 1.54:
    1>LINK : fatal error LNK1104: cannot open file 'libboost_thread-vc100-mt-sgd-1_54.lib'

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut
    Une nuit plus tard

    Désactivation de l'auto_link via la macro BOOST_ALL_NO_LIB=1.
    Voici une erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1>mycpp.obj : error LNK2019: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)"  referenced in function "public: class std::_Vector_const_iterator<class std::_Vector_val<..., ...> > & __thiscall std::_Vector_const_iterator<class std::_Vector_val<..., ...> >::operator++(void) ...
    ???

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut
    Citation Envoyé par camboui Voir le message
    boost/unordered_set.hpp
    boost/unordered_map.hpp
    boost/preprocessor.hpp
    Outre les précités j'avais oublié celui-ci:
    #include <boost/pool/pool_alloc.hpp>

    J'ai réussi à compiler mon projet avec boost 1.54. Je n'ai plus cherché à voir "qui" m'empêche l'usage header only de boost.
    En désactivant l'auto-link, seule une référence manque dans l'édition de lien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unresolved external symbol class boost::system::error_category const & __cdecl boost::system::system_category(void)
    Donc entre 1.42/1.47 et 1.54 il y a eu un changement quelque part. On verra plus tard lequel, ce n'est sans doute pas critique.

    Merci à tous

  8. #8
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut
    J'ai une autre quesion...
    J'ouvrirais bien un nouveau sujet, mais bon, ça ne vaut p-ê pas la peine pour si peu

    Je parse du XML dont voici un contenu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <name>Max Baucus<name>
    Je fais donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::string name=pt.get<std::string>("name");
    qui me renvoit (même le forum "casse" le contenu lors de l'édition)

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

Discussions similaires

  1. Comment empêcher la mise à jour d'un contrôle à l'écran ?
    Par JojoLaFripouille dans le forum Composants VCL
    Réponses: 4
    Dernier message: 19/09/2003, 12h52
  2. [mise à jour]Comment procéder sans tout péter...
    Par FFF dans le forum Installation
    Réponses: 3
    Dernier message: 10/09/2003, 08h11
  3. Mise à jour de la version de MySQL
    Par jobstar dans le forum Administration
    Réponses: 8
    Dernier message: 18/08/2003, 10h45
  4. mise à jour de champs time (interbase)
    Par pram dans le forum XMLRAD
    Réponses: 6
    Dernier message: 04/03/2003, 10h25
  5. Réponses: 2
    Dernier message: 12/02/2003, 15h26

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