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 :

probleme include <boost/serialization/vector.hpp>


Sujet :

Boost C++

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 74
    Par défaut probleme include <boost/serialization/vector.hpp>
    Bonjour à tous

    J'ai récemment débuté un stage dont une partie consiste à serialiser quelques petites choses.
    Je me suis tourné vers Boost.Serialization qui a l'air assez simple d'utilisation.
    J'ai fait un petit projet test où j'ai testé pas mal de choses, notamment la serialisation de std::vector.
    Sur mon projet test, je n'ai aucun problème. Par contre quand j'essaye de placer un #include <boost/serialization/vector.hpp> dans le projet sur lequel je travaille (une quarantaine de classes) j'obtiens à la compilation une longue liste d'erreurs pour chacune des classes du projet (je suppose que c'est parce que le projet est mal foutu et qu'il y a des include en cascades, dont une bonne partie d'inutiles - ce n'est pas moi qui ai conçu le projet ^^ )

    voici les erreurs
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(314) : warning C4003: nombre de paramètres réels insuffisants pour la macro 'min'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(323) : warning C4003: nombre de paramètres réels insuffisants pour la macro 'max'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(314) : error C2059: erreur de syntaxe*: ')'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(427)*: voir la référence à l'instanciation du modèle de classe 'std::valarray<_Ty>' en cours de compilation
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(314) : error C2334: jetons inattendus avant ':'*; corps apparent de la fonction ignoré
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(321) : error C2143: erreur de syntaxe*: absence de ')' avant '}'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(321) : error C2143: erreur de syntaxe*: absence de '}' avant ')'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(321) : error C2059: erreur de syntaxe*: ')'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(321) : error C2143: erreur de syntaxe*: absence de ';' avant '}'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(321) : error C2238: jetons inattendus avant ';'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(323) : error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur '_Ty'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(314) : error C2059: erreur de syntaxe*: ')'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(1124)*: voir la référence à l'instanciation du modèle de classe 'std::valarray<_Ty>' en cours de compilation
    with
    [
    _Ty=size_t
    ]
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(314) : error C2334: jetons inattendus avant ':'*; corps apparent de la fonction ignoré
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(321) : error C2143: erreur de syntaxe*: absence de ')' avant '}'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(321) : error C2143: erreur de syntaxe*: absence de '}' avant ')'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(321) : error C2059: erreur de syntaxe*: ')'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(323) : error C2334: jetons inattendus avant ':'*; corps apparent de la fonction ignoré
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(330) : error C2143: erreur de syntaxe*: absence de ')' avant '}'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(330) : error C2143: erreur de syntaxe*: absence de '}' avant ')'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(330) : error C2059: erreur de syntaxe*: ')'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(330) : error C2143: erreur de syntaxe*: absence de ';' avant '}'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(330) : error C2238: jetons inattendus avant ';'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(332) : error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'valarray'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(314) : error C2059: erreur de syntaxe*: ')'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(1333)*: voir la référence à l'instanciation du modèle de classe 'std::valarray<_Ty>' en cours de compilation
    with
    [
    _Ty=std::_Bool
    ]
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(1335)*: voir la référence à l'instanciation du modèle de classe 'std::mask_array<_Ty>' en cours de compilation
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(314) : error C2334: jetons inattendus avant ':'*; corps apparent de la fonction ignoré
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(321) : error C2143: erreur de syntaxe*: absence de ')' avant '}'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(321) : error C2143: erreur de syntaxe*: absence de '}' avant ')'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(321) : error C2059: erreur de syntaxe*: ')'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(321) : error C2143: erreur de syntaxe*: absence de ';' avant '}'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(321) : error C2238: jetons inattendus avant ';'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\valarray(323) : error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur '_Ty'
    elles concernent toutes la classe valarray, et oui j'utilise Visual C++ 2003.

    le truc agaçant c'est que je peux inclure list, deque, map ou autres sans problemes... j'ai juste le probleme pour vector...

    je pensais feinter ça en serialisant les éléments du vector un à un via une boucle, mais évidemment à la deserialization il manque la taille des vector...

    j'ai googlé pas mal de truc mais je n'ai rien vu concernant ce probleme.

    est ce que quelqu'un aurait un début d'idée pour me sortir de là ?

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Est-ce que tu inclus windows.h a un quelconque moment ? Si c'est le cas, il faudra peut être ajouter NOMINMAX (ou quelque chose d'approchant) aux définitions de ton projet.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 74
    Par défaut
    Bonjour

    j'ai effectivement des include de windows.h. J'ai ajouté #define NOMINMAX avant ces include. J'ai également dû l'ajouter à plusieurs autres endroits de mon projet.
    Je ne connaissais pas ce problème de macros (quelle idée de les nommer en minuscules...).

    Merci beaucoup pour l'astuce.

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Normalement, il serait sans doute beaucoup plus facile de rajouter ce défine à la commande de compilation...

    Dans les propriétés de ton projet, cherche, sur la gauche, la "branche" "preprocesseur" qui se trouve dans C/C++ (qui se trouve, elle-même, dans "configuration properties).

    Sur la droite, tu trouveras une ligne "preprocessor definitions", sur laquelle il "suffit" de cliquer pour ajouter, en fin de ligne "; NOMINMAX " (le ; n'étant nécessaire que si il y a déjà quelque chose).

    De cette manière, la ligne de commande du compilateur sera, entre autres, compsée de /D NOMINMAX, ce qui aura pour effet de le définir directement dans tous les fichiers, et donc de t'éviter d'avoir à modifier tous les fichiers de ton projet et ceux inclus de manière indirecte...
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 74
    Par défaut
    ah, merci pour l'astuce je ne connaissais pas non plus (je n'ai pas vraiment de formation de développeur, donc y a pas mal de petites choses comme ça que je ne connais pas)

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

Discussions similaires

  1. Boost: Serialization d'un vector d'objet
    Par antooo dans le forum Boost
    Réponses: 6
    Dernier message: 05/12/2010, 14h41
  2. [Boost] probleme d'inclusion du header thread.hpp
    Par Neaira05 dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 04/05/2009, 18h37
  3. Librairie boost::serialization + vector : possible ?
    Par zax-tfh dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 07/01/2006, 14h15
  4. Réponses: 15
    Dernier message: 20/09/2005, 09h54
  5. boost::serialize
    Par Fry dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 05/11/2004, 18h03

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