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 :

Aide installation Boost Version 1.46.1


Sujet :

Boost C++

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Business Intelligence

    Informations forums :
    Inscription : Juin 2011
    Messages : 108
    Par défaut Aide installation Boost Version 1.46.1
    Bonjour tout le monde, voila maintenant trois jours que je cherches sans cesse le moyen d'installer proprement Boost afin que je puisse compiler du code sous Code Block (version 10.05) avec Mingw(gcc) sous Window.

    J'ai beaucoup cherché. J'ai essayé d'installer avec le jbam... mais rien.
    Enfaîte, j'ai besoin de sérialiser ma classe Carte (map d'un jeu) car j'ai pour projet de créer un éditeur sous QT + SFML...

    S'il vous plaît indiquez moi comment installer boost s'il vous plaît...
    Merci D'Avance.
    Au Revoir.

  2. #2
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    dans un shell

    bootstrap.bat

    puis

    bjam --toolset=gcc --layout=system --with-thread install

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Business Intelligence

    Informations forums :
    Inscription : Juin 2011
    Messages : 108
    Par défaut
    Rebonjour, j'obtiens ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Microsoft Windows [version 6.1.7100]
    Copyright (c) 2009 Microsoft Corporation. Tous droits réservés.
     
    C:\Users\Toto>bootstrap.bat
    'bootstrap.bat' n'est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
     
    C:\Users\Toto>cd C:\Boost\tools\build\v2
     
    C:\Boost\tools\build\v2>bootstrap.bat
    Bootstrapping the build engine
    'cl' n'est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
     
    Failed to bootstrap the build engine
    Please consult bootstrap.log for furter diagnostics.
     
     
    C:\Boost\tools\build\v2>cd C:\Boost
     
    C:\Boost>bjam --toolset=gcc --layout=system --with-thread install
    C:/Boost/tools/build/v2/build\virtual-target.jam:1079: in virtual-target.registe
    r-actual-name from module virtual-target
    error: Duplicate name of actual target: <pC:\Boost\lib>libboost_thread.a
    error: previous virtual target { common%common.copy-libboost_thread.a.STATIC_LIB
     { gcc%gcc.archive-libboost_thread.a.STATIC_LIB { gcc%gcc.compile.c++-win32\thre
    ad.o.OBJ { win32/thread.cpp.CPP } } { gcc%gcc.compile.c++-win32\tss_dll.o.OBJ {
    win32/tss_dll.cpp.CPP } } { gcc%gcc.compile.c++-win32\tss_pe.o.OBJ { win32/tss_p
    e.cpp.CPP } } } }
    error: created from ./install-proper-lib-static
    error: another virtual target { common%common.copy-libboost_thread.a.STATIC_LIB
    { gcc%gcc.archive-libboost_thread.a.STATIC_LIB { gcc%gcc.compile.c++-win32\threa
    d.o.OBJ { win32/thread.cpp.CPP } } { gcc%gcc.compile.c++-win32\tss_dll.o.OBJ { w
    in32/tss_dll.cpp.CPP } } { gcc%gcc.compile.c++-win32\tss_pe.o.OBJ { win32/tss_pe
    .cpp.CPP } } } }
    error: created from ./install-proper-lib-static
    error: added properties: <debug-symbols>on <inlining>off <optimization>off <runt
    ime-debugging>on <variant>debug
    error: removed properties: <debug-symbols>off <define>NDEBUG <inlining>full <opt
    imization>speed <runtime-debugging>off <variant>release
    C:/Boost/tools/build/v2/build\virtual-target.jam:490: in actualize-no-scanner fr
    om module object(file-target)@692
    C:/Boost/tools/build/v2/build\virtual-target.jam:135: in object(file-target)@692
    .actualize from module object(file-target)@692
    C:/Boost/tools/build/v2\build-system.jam:748: in load from module build-system
    C:\Boost\tools\build\v2/kernel\modules.jam:283: in import from module modules
    C:\Boost\tools\build\v2\kernel\bootstrap.jam:142: in boost-build from module
    C:\Boost\boost-build.jam:17: in module scope from module
     
    C:\Boost>

    Je ne comprend vraiment pas pourquoi ça ne fonctionne pas ><, pourtant j'ai téléchargé le bjam, le dernier, en même temps que j'ai téléchargé Boost...

    Sur le site de Boost, on dit qu'il faut gcc 4.4.0, et moi j'ai gcc version 4.4.1, ce n'est pas pour ça ?

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Il tente de compiler avec le compilateur visual C++, et non pas gcc. En jetant un œil dans boost_1_46_1\tools\build\v2\engine\src\build.bat, on dirait que tu peux t'amuser avec la variable d'environnement BOOST_JAM_TOOLSET pour changer ça.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Business Intelligence

    Informations forums :
    Inscription : Juin 2011
    Messages : 108
    Par défaut
    Rebonjour tout le monde, alors j'ai modifié une partie du fichier build.bat, voila le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if EXIST "%ProgramFiles%\CodeBlocks\MinGW\bin\gcc.exe" (
        set "BOOST_JAM_TOOLSET=mingw"
        set "BOOST_JAM_TOOLSET_ROOT=%ProgramFiles%\CodeBlocks\MinGW\"
        goto :eof)
    Alors j'ai modifié car Mingw a été installé en même temps que mon Code Block 10.05...
    Et voila ce que j'obtiens à la console, je commence vraiment à désespérer... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    C:\boost_1_46_1>bjam --toolset=gcc --layout=system --with-thread install
    C:/boost_1_46_1/tools/build/v2/build\virtual-target.jam:1079: in virtual-target.
    register-actual-name from module virtual-target
    error: Duplicate name of actual target: <pC:\Boost\lib>libboost_thread.a
    error: previous virtual target { common%common.copy-libboost_thread.a.STATIC_LIB
     { gcc%gcc.archive-libboost_thread.a.STATIC_LIB { gcc%gcc.compile.c++-win32\thre
    ad.o.OBJ { win32/thread.cpp.CPP } } { gcc%gcc.compile.c++-win32\tss_dll.o.OBJ {
    win32/tss_dll.cpp.CPP } } { gcc%gcc.compile.c++-win32\tss_pe.o.OBJ { win32/tss_p
    e.cpp.CPP } } } }
    error: created from ./install-proper-lib-static
    error: another virtual target { common%common.copy-libboost_thread.a.STATIC_LIB
    { gcc%gcc.archive-libboost_thread.a.STATIC_LIB { gcc%gcc.compile.c++-win32\threa
    d.o.OBJ { win32/thread.cpp.CPP } } { gcc%gcc.compile.c++-win32\tss_dll.o.OBJ { w
    in32/tss_dll.cpp.CPP } } { gcc%gcc.compile.c++-win32\tss_pe.o.OBJ { win32/tss_pe
    .cpp.CPP } } } }
    error: created from ./install-proper-lib-static
    error: added properties: <debug-symbols>on <inlining>off <optimization>off <runt
    ime-debugging>on <variant>debug
    error: removed properties: <debug-symbols>off <define>NDEBUG <inlining>full <opt
    imization>speed <runtime-debugging>off <variant>release
    C:/boost_1_46_1/tools/build/v2/build\virtual-target.jam:490: in actualize-no-sca
    nner from module object(file-target)@692
    C:/boost_1_46_1/tools/build/v2/build\virtual-target.jam:135: in object(file-targ
    et)@692.actualize from module object(file-target)@692
    C:/boost_1_46_1/tools/build/v2\build-system.jam:748: in load from module build-s
    ystem
    C:\boost_1_46_1\tools\build\v2/kernel\modules.jam:283: in import from module mod
    ules
    C:\boost_1_46_1\tools\build\v2\kernel\bootstrap.jam:142: in boost-build from mod
    ule
    C:\boost_1_46_1\boost-build.jam:17: in module scope from module
    Je désespéré... si c'est ça je vais devoir passer sous Visual Studio 2010 qui n'a pas ce problème, qui dispose même d'un installateur...

    Mais c'est quand même bizarre que je n'arrive pas à installer...

  6. #6
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Peut-être peux tu bootstrapper avec visual C++ 2010, puis, une fois ça fait, compiler boost avec gcc ?
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  7. #7
    Membre confirmé
    Homme Profil pro
    Ingénieur Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Business Intelligence

    Informations forums :
    Inscription : Juin 2011
    Messages : 108
    Par défaut
    Mais j'ai uniquement Code Block d'installé sur mon ordinateur...

  8. #8
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Pour ne pas voir le système de génération de boost détecter automatiquement le mauvais compilateur, cad Visual lorsque je veux mingw, voilà comment je procède :
    1/J'ouvre la fenêtre de commande DOS
    2/Dans cette fenêtre, j'efface la variable d'environnement PATH : set PATH=
    3/Dans cette fenêtre, je rajoute les chemins dont j'ai besoin : je vais sous MingGW et j'exécute mingwvars.bat
    4/Dans cette fenêtre j'exécute bootstrap
    5/Dans cette fenêtre j'ajoute le chemin du binaire généré
    6/Dans cette fenêtre j'exécute bjam plus ou moins comme proposé par Joel.

    Les variables d'environnements restent locales à la session cmd. Donc, ne pas hésiter à effacer toutes les variables qui gênent et créer seulement celles dont le système a besoin

  9. #9
    Membre confirmé
    Homme Profil pro
    Ingénieur Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Business Intelligence

    Informations forums :
    Inscription : Juin 2011
    Messages : 108
    Par défaut
    Quand je lance bootstrap.bat, voila ce que j'obtiens à la console :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    C:\boost_1_46_1>bootstrap.bat
    Building Boost.Jam build engine
    'cl' n'est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
     
    Failed to build Boost.Jam build engine.
    Please consult bjam.log for furter diagnostics.
     
    You can try to obtain a prebuilt binary from
     
       http://sf.net/project/showfiles.php?group_id=7586&package_id=72941
     
    Also, you can file an issue at http://svn.boost.org
    C'est la ligne du 'cl' n'est pas reconnu en tant que commande externe, etc...
    qui m'inquiète... je pense que le problème peut venir de là...

  10. #10
    Membre confirmé

    Inscrit en
    Octobre 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 69
    Par défaut
    Salut,
    J'ai eu le même problème récemment.
    Comme les autres te l'ont déjà dit, 'cl' n'est pas reconnu parce que le compilateur de Visual C++ n'est pas installé. Puisque tu utilises mingw, essaies ceci
    Va dans le dossier boost_1_46_1\tools\build\v2\engine\src et lance la commande
    Celà va créer bjam.exe pour gcc/mingw.
    Ajoute le chemin de bjam.exe (normalement ici boost_1_46_1\tools\build\v2\engine\src\bin.ntx86) dans le PATH .
    A la racine du dossier boost(\boost_1_46_1), tapes
    Dis moi ce que çà donne.
    A plus.

  11. #11
    Membre confirmé
    Homme Profil pro
    Ingénieur Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Business Intelligence

    Informations forums :
    Inscription : Juin 2011
    Messages : 108
    Par défaut
    Re bonjour, voila, je pense que le code a compilé correctement, voila la console :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    The Boost C++ Libraries were successfully built!
     
    The following directory should be added to compiler include paths:
     
        C:\boost_1_46_1
     
    The following directory should be added to linker library paths:
     
        C:\boost_1_46_1\stage\lib
    Voila, maintenant, je ne sais pas si je dois copier les dossiers respectivement dans l'include de mon MinGW de mon code block et le lib de mon Code Block, ou si je dois indiquer les fichiers dans linker setting...
    J'ai essayé et je n'arrive pas.

    Désolé je ne suis vraiment pas doué pour les installations (-_-')...

    Merci D'Avance.
    Au Revoir.

  12. #12
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Dans codeblock, tu as 2 possibilités:
    => Configuration au niveau du projet
    - Menu Projet
    - Item Build Option
    - Onglet Search Directory
    - 3 sous onglets :
    - Compiler pour spécifier le répertoire Boost de base
    - Linker pour spécifier le répertoire où se situe les .lib
    - Resource compiler : à ma connaissance inutile pour boost

    => Configuration au niveau IDE
    - Menu Settings
    - Item Compiler and Debuggers
    - Onglet Search Directory
    - 3 sous onglets :
    - Compiler pour spécifier le répertoire Boost de base
    - Linker pour spécifier le répertoire où se situe les .lib
    - Resource compiler : à ma connaissance inutile pour boost

  13. #13
    Membre confirmé
    Homme Profil pro
    Ingénieur Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Business Intelligence

    Informations forums :
    Inscription : Juin 2011
    Messages : 108
    Par défaut
    Re bonjour tout le monde, alors voila, j'ai configuré le projet dans setting.

    Compilateur :

    http://www.imagup.com/data/1123150431.html

    Linker :

    http://www.imagup.com/data/1123150465.html

    J'utilise ce code source pour tester que la sérialisation fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    #include <fstream>
     
    #include <boost/archive/text_oarchive.hpp>
    #include <boost/archive/text_iarchive.hpp>
     
    class Note
    {
    private:
            friend class boost::serialization::access;
     
            template<class Archive>
            void serialize(Archive & ar, const unsigned int version) {
                    ar & numerateur;
                    ar & denominateur;
            }
     
            int numerateur;
            int denominateur;
    public:
            Note() {};
            Note(int n, int d) :
                            numerateur(n), denominateur(d) {}
    };
     
     
    int main()
    {
            std::ofstream ofs("fichierDeSerialisation");
     
            // Vous avez vu comme je travaille bien ? :)
            const Note maNoteDePhysisque(20,20);
     
     
            {
                    boost::archive::text_oarchive oa(ofs);
                    oa << maNoteDePhysisque;
            }
     
            /** Quelque temps plus tard… ***/
     
            Note monAncienneNote;
     
            {
                    std::ifstream ifs("fichierDeSerialisation");
                    boost::archive::text_iarchive ia(ifs);
     
                    ia >> monAncienneNote;
            }
     
            return 0;
    }
    Malheureusement, j'obtiens ces erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    C:\Users\Totok\Desktop\Projet C++\Entrainement\main.cpp|17|error: boost/archive/text_oarchive.hpp: No such file or directory|
    C:\Users\Toto\Desktop\Projet C++\Entrainement\main.cpp|18|error: boost/archive/text_iarchive.hpp: No such file or directory|
    C:\Users\Toto\Desktop\Projet C++\Entrainement\main.cpp|23|error: 'boost' has not been declared|
    C:\Users\Toto\Desktop\Projet C++\Entrainement\main.cpp|23|error: friend declaration does not name a class or function|
    C:\Users\Toto\Desktop\Projet C++\Entrainement\main.cpp||In function 'int main()':|
    C:\Users\Toto\Desktop\Projet C++\Entrainement\main.cpp|49|error: 'boost' has not been declared|
    C:\Users\Toto\Desktop\Projet C++\Entrainement\main.cpp|49|error: expected ';' before 'oa'|
    C:\Users\Toto\Desktop\Projet C++\Entrainement\main.cpp|50|error: 'oa' was not declared in this scope|
    C:\Users\Toto\Desktop\Projet C++\Entrainement\main.cpp|59|error: 'boost' has not been declared|
    C:\Users\Toto\Desktop\Projet C++\Entrainement\main.cpp|59|error: expected ';' before 'ia'|
    C:\Users\Toto\Desktop\Projet C++\Entrainement\main.cpp|61|error: 'ia' was not declared in this scope|
    ||=== Build finished: 10 errors, 0 warnings ===|

  14. #14
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    The following directory should be added to compiler include paths:

    C:\boost_1_46_1

  15. #15
    Membre confirmé
    Homme Profil pro
    Ingénieur Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Business Intelligence

    Informations forums :
    Inscription : Juin 2011
    Messages : 108
    Par défaut
    J'ai déjà essayé mais cela ne fonctionne pas, mon code ne compile pas...
    J'ai copié boost_1_46_1 dans le dossier include de mon Code block et j'ai copié les lib présentes dans stage de boost_1_46_1 dans le lib de mon Code Block.

    Mais rien, ça ne compile pas...

  16. #16
    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
    Bonsoir,

    Le fichier qu'il recherche existe au moins ? (vérifie manuellement) Si c'est le cas et que tu as effectué la correction indiqué par Arzar (ou copier le dossier d'include de boost, le dossier pas seulement le contenu, dans le dossier d'include de C::B/MinGW, alors au moins les 2 premières erreurs devraient disparaître.

    NB: Il y a une incohérences entre le code source que tu nous présentes et les numéros de lignes indiqués par le compilateur ...

  17. #17
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    Citation Envoyé par Happpy Voir le message
    J'ai déjà essayé mais cela ne fonctionne pas, mon code ne compile pas...
    Quel est le message d'erreur ?

    Avec le mauvais chemin, comme sur ton screenshot (c:\boost_1_46_1\boost) tu obtiens des erreurs de type "No such file or directory", mais quel est le message d'erreur avec le bon chemin ? (c:\boost_1_46_1)

  18. #18
    Membre confirmé
    Homme Profil pro
    Ingénieur Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Business Intelligence

    Informations forums :
    Inscription : Juin 2011
    Messages : 108
    Par défaut
    Re bonjour, bon je remet les informations de configurations ici.

    Compiler : C:\boost_1_46_1

    Linker : C:\boost_1_46_1\stage\lib


    J'ai pris le premier code source du tutoriel sur la sérialisation de boost :
    http://www.boost.org/doc/libs/1_46_1.../tutorial.html

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    //Standard
    /*
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <vector>
     
    #include "Carte.hpp" */
     
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <vector>
     
    // include headers that implement a archive in simple text format
    #include <boost/archive/text_oarchive.hpp>
    #include <boost/archive/text_iarchive.hpp>
     
    /////////////////////////////////////////////////////////////
    // gps coordinate
    //
    // illustrates serialization for a simple type
    //
    class gps_position
    {
    private:
        friend class boost::serialization::access;
        // When the class Archive corresponds to an output archive, the
        // & operator is defined similar to <<.  Likewise, when the class Archive
        // is a type of input archive the & operator is defined similar to >>.
        template<class Archive>
        void serialize(Archive & ar, const unsigned int version)
        {
            ar & degrees;
            ar & minutes;
            ar & seconds;
        }
        int degrees;
        int minutes;
        float seconds;
    public:
        gps_position(){};
        gps_position(int d, int m, float s) :
            degrees(d), minutes(m), seconds(s)
        {}
    };
     
    int main() {
        // create and open a character archive for output
        std::ofstream ofs("filename");
     
        // create class instance
        const gps_position g(35, 59, 24.567f);
     
        // save data to archive
        {
            boost::archive::text_oarchive oa(ofs);
            // write class instance to archive
            oa << g;
        	// archive and stream closed when destructors are called
        }
     
        // ... some time later restore the class instance to its orginal state
        gps_position newg;
        {
            // create and open an archive for input
            std::ifstream ifs("filename");
            boost::archive::text_iarchive ia(ifs);
            // read class state from archive
            ia >> newg;
            // archive and stream closed when destructors are called
        }
        return 0;
    }
    Voila les erreurs obtenues :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    obj\Release\main.o:main.cpp|| undefined reference to `boost::serialization::extended_type_info::key_unregister() const'|
    obj\Release\main.o:main.cpp|| undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::type_unregister()'|
    obj\Release\main.o:main.cpp|| undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::~extended_type_info_typeid_0()'|
    obj\Release\main.o:main.cpp|| undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::~extended_type_info_typeid_0()'|
    obj\Release\main.o:main.cpp|| undefined reference to `boost::archive::detail::basic_oserializer::~basic_oserializer()'|
    obj\Release\main.o:main.cpp|| undefined reference to `boost::archive::detail::basic_iserializer::~basic_iserializer()'|
    obj\Release\main.o:main.cpp|| undefined reference to `boost::archive::text_oarchive_impl<boost::archive::text_oarchive>::text_oarchive_impl(std::ostream&, unsigned int)'|
    obj\Release\main.o:main.cpp|| undefined reference to `boost::archive::detail::basic_oarchive::save_object(void const*, boost::archive::detail::basic_oserializer const&)'|
    obj\Release\main.o:main.cpp|| undefined reference to `boost::archive::detail::basic_oarchive::~basic_oarchive()'|
    obj\Release\main.o:main.cpp|| undefined reference to `boost::archive::basic_text_oprimitive<std::ostream>::~basic_text_oprimitive()'|
    obj\Release\main.o:main.cpp|| undefined reference to `boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::text_iarchive_impl(std::istream&, unsigned int)'|
    obj\Release\main.o:main.cpp|| undefined reference to `boost::archive::detail::shared_ptr_helper::shared_ptr_helper()'|
    obj\Release\main.o:main.cpp|| undefined reference to `boost::archive::detail::basic_iarchive::load_object(void*, boost::archive::detail::basic_iserializer const&)'|
    obj\Release\main.o:main.cpp|| undefined reference to `boost::archive::detail::shared_ptr_helper::~shared_ptr_helper()'|
    obj\Release\main.o:main.cpp|| undefined reference to `boost::archive::detail::basic_iarchive::~basic_iarchive()'|
    obj\Release\main.o:main.cpp|| undefined reference to `boost::archive::basic_text_iprimitive<std::istream>::~basic_text_iprimitive()'|
    obj\Release\main.o:main.cpp|| undefined reference to `boost::archive::basic_text_oprimitive<std::ostream>::~basic_text_oprimitive()'|
    obj\Release\main.o:main.cpp|| undefined reference to `boost::archive::basic_text_iprimitive<std::istream>::~basic_text_iprimitive()'|
    ::~singleton_wrapper()]+0x1b)||undefined reference to `boost::archive::detail::basic_oserializer::~basic_oserializer()'|
    ::~singleton_wrapper()]+0x18)||undefined reference to `boost::archive::detail::basic_oserializer::~basic_oserializer()'|
    ::~oserializer()]+0x14)||undefined reference to `boost::archive::detail::basic_oserializer::~basic_oserializer()'|
    ::~oserializer()]+0x11)||undefined reference to `boost::archive::detail::basic_oserializer::~basic_oserializer()'|
    ::~singleton_wrapper()]+0x1b)||undefined reference to `boost::archive::detail::basic_iserializer::~basic_iserializer()'|
    ::~singleton_wrapper()]+0x18)||undefined reference to `boost::archive::detail::basic_iserializer::~basic_iserializer()'|
    ::~iserializer()]+0x14)||undefined reference to `boost::archive::detail::basic_iserializer::~basic_iserializer()'|
    ::~iserializer()]+0x11)||undefined reference to `boost::archive::detail::basic_iserializer::~basic_iserializer()'|
    ::~extended_type_info_typeid()]+0x43)||undefined reference to `boost::serialization::extended_type_info::key_unregister() const'|
    ::~extended_type_info_typeid()]+0x4e)||undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::type_unregister()'|
    ::~extended_type_info_typeid()]+0x60)||undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::~extended_type_info_typeid_0()'|
    ::~extended_type_info_typeid()]+0x93)||undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::~extended_type_info_typeid_0()'|
    ::~extended_type_info_typeid()]+0x43)||undefined reference to `boost::serialization::extended_type_info::key_unregister() const'|
    ::~extended_type_info_typeid()]+0x4e)||undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::type_unregister()'|
    ::~extended_type_info_typeid()]+0x60)||undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::~extended_type_info_typeid_0()'|
    ::~extended_type_info_typeid()]+0x88)||undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::~extended_type_info_typeid_0()'|
    ::get_instance()]+0x7f)||undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::extended_type_info_typeid_0(char const*)'|
    ::get_instance()]+0xa4)||undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::type_register(std::type_info const&)'|
    ::get_instance()]+0xb0)||undefined reference to `boost::serialization::extended_type_info::key_register() const'|
    ::get_instance()]+0x115)||undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::~extended_type_info_typeid_0()'|
    ::oserializer()]+0x17)||undefined reference to `boost::archive::detail::basic_oserializer::basic_oserializer(boost::serialization::extended_type_info const&)'|
    ::get_instance()]+0x7c)||undefined reference to `boost::archive::detail::basic_iserializer::basic_iserializer(boost::serialization::extended_type_info const&)'|
    ::~text_oarchive_impl()]+0x43)||undefined reference to `boost::archive::detail::basic_oarchive::~basic_oarchive()'|
    ::~text_oarchive_impl()]+0x58)||undefined reference to `boost::archive::basic_text_oprimitive<std::ostream>::~basic_text_oprimitive()'|
    ::~text_oarchive_impl()]+0x8e)||undefined reference to `boost::archive::basic_text_oprimitive<std::ostream>::~basic_text_oprimitive()'|
    ::~text_oarchive_impl()]+0x43)||undefined reference to `boost::archive::detail::basic_oarchive::~basic_oarchive()'|
    ::~text_oarchive_impl()]+0x58)||undefined reference to `boost::archive::basic_text_oprimitive<std::ostream>::~basic_text_oprimitive()'|
    ::~text_oarchive_impl()]+0x83)||undefined reference to `boost::archive::basic_text_oprimitive<std::ostream>::~basic_text_oprimitive()'|
    ::~basic_text_oarchive()]+0x14)||undefined reference to `boost::archive::detail::basic_oarchive::~basic_oarchive()'|
    ::~basic_text_oarchive()]+0x11)||undefined reference to `boost::archive::detail::basic_oarchive::~basic_oarchive()'|
    ::~common_oarchive()]+0x14)||undefined reference to `boost::archive::detail::basic_oarchive::~basic_oarchive()'|
    ::~common_oarchive()]+0x11)||undefined reference to `boost::archive::detail::basic_oarchive::~basic_oarchive()'|
    ||More errors follow but not being shown.|
    ||Edit the max errors limit in compiler options...|
    ||=== Build finished: 50 errors, 0 warnings ===|
    Choquant...
    P.S : Et oui les chemin de compiler et linker existent vraiment car le répertoire boost_1_46_1 est bien à la racine de mon disque C...


    Merci D'Avance.
    Au Revoir.

  19. #19
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    Parfait ! C'est presque bon maintenant.
    Les erreurs que tu obtiens ("undefined reference to") ne sont plus des erreurs de compilation, mais des erreurs de link. Les headers sont donc correctement trouvés, la compilation se passe bien, mais pas le link car tu n'as pas indiqué à gcc les bibliothèques avec lesquelles il doit linker.

    Pour indiquer le nom d'une biblio à linker, il faut passer en option à gcc :
    -lnom_de_la_bibliotheque
    et dans ce cas il ira chercher une bibliothèque nommée libnom_de_la_bibliotheque.a

    Donc par exemple si dans ton répertoire /stage/lib tu as une bibliothèque nommée libboostserialization.a alors il faut que tu passes en option du linker "-lboostserialization"

    (PS boost.serialization dépend peut être d'autre biblio de boost comme boost.system, je ne me souviens plus trop, dans ce cas il faudra aussi linker avec ces biblio.)

  20. #20
    Membre confirmé
    Homme Profil pro
    Ingénieur Business Intelligence
    Inscrit en
    Juin 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Business Intelligence

    Informations forums :
    Inscription : Juin 2011
    Messages : 108
    Par défaut
    Rebonjour tout le monde, le PC sur lequel j'étais a eu quelques problèmes... de disque dur notamment. C'est pour cela que je n'ai pas pu vous répondre pour vous tenir au courant... Je suis sur mon ordinateur portable. J'ai installé Boost, et j'ai ajouté les lib dans le linker, toutes les lib :

    Screen : http://hpics.li/d040632

    Mon code source tiré du tutoriel Boost :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
     
    #include <iostream>
    #include <string>
    #include <fstream>
     
    // include headers that implement a archive in simple text format
    #include <boost/archive/text_oarchive.hpp>
    #include <boost/archive/text_iarchive.hpp>
     
    /////////////////////////////////////////////////////////////
    // gps coordinate
    //
    // illustrates serialization for a simple type
    //
    class gps_position
    {
    private:
        friend class boost::serialization::access;
        // When the class Archive corresponds to an output archive, the
        // & operator is defined similar to <<.  Likewise, when the class Archive
        // is a type of input archive the & operator is defined similar to >>.
        template<class Archive>
        void serialize(Archive & ar, const unsigned int version)
        {
            ar & degrees;
            ar & minutes;
            ar & seconds;
        }
        int degrees;
        int minutes;
        float seconds;
    public:
        gps_position(){};
        gps_position(int d, int m, float s) :
            degrees(d), minutes(m), seconds(s)
        {}
    };
     
    int main() {
        // create and open a character archive for output
        std::ofstream ofs("filename");
     
        // create class instance
        const gps_position g(35, 59, 24.567f);
     
        // save data to archive
        {
            boost::archive::text_oarchive oa(ofs);
            // write class instance to archive
            oa << g;
        	// archive and stream closed when destructors are called
        }
     
        // ... some time later restore the class instance to its orginal state
        gps_position newg;
        {
            // create and open an archive for input
            std::ifstream ifs("filename");
            boost::archive::text_iarchive ia(ifs);
            // read class state from archive
            ia >> newg;
            // archive and stream closed when destructors are called
        }
        return 0;
    }
    Malheureusement, voila ce que j'obtiens lors de la compilation... Désolé de vous embêter avec ça mais je fais comme je peux, j'ai tout fait, linker pour les lib, le compiler, etc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
     int)]+0x13b):text_oarchive.cpp||undefined reference to `std::ostream& std::ostream::_M_insert<unsigned long>(unsigned long)'|
    )]+0x150):text_oarchive.cpp||undefined reference to `std::ostream& std::ostream::_M_insert<unsigned long>(unsigned long)'|
    )]+0x1b1):text_oarchive.cpp||undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)'|
    )]+0x148):text_oarchive.cpp||undefined reference to `std::ostream& std::ostream::_M_insert<unsigned long>(unsigned long)'|
    )]+0x129):text_oarchive.cpp||undefined reference to `std::ostream& std::ostream::_M_insert<unsigned long>(unsigned long)'|
    )]+0x129):text_oarchive.cpp||undefined reference to `std::ostream& std::ostream::_M_insert<unsigned long>(unsigned long)'|
    )]+0x148):text_oarchive.cpp||undefined reference to `std::ostream& std::ostream::_M_insert<unsigned long>(unsigned long)'|
    )]+0x148):text_oarchive.cpp||undefined reference to `std::ostream& std::ostream::_M_insert<unsigned long>(unsigned long)'|
    )]+0x193):text_oarchive.cpp||undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)'|
    ::init()]+0x19f):text_oarchive.cpp||undefined reference to `std::ostream& std::ostream::_M_insert<unsigned long>(unsigned long)'|
    ::init()]+0x1eb):text_oarchive.cpp||undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)'|
    ::init()]+0x602):text_oarchive.cpp||undefined reference to `std::ostream& std::ostream::_M_insert<unsigned long>(unsigned long)'|
     int)]+0x18f):text_oarchive.cpp||undefined reference to `std::ostream& std::ostream::_M_insert<unsigned long>(unsigned long)'|
     int)]+0x1db):text_oarchive.cpp||undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)'|
    )]+0xda):text_iarchive.cpp||undefined reference to `std::istream& std::istream::_M_extract<unsigned int>(unsigned int&)'|
    )]+0xda):text_iarchive.cpp||undefined reference to `std::istream& std::istream::_M_extract<bool>(bool&)'|
     int)]+0x122):text_iarchive.cpp||undefined reference to `std::istream& std::istream::_M_extract<unsigned int>(unsigned int&)'|
     int)]+0x122):text_iarchive.cpp||undefined reference to `std::istream& std::istream::_M_extract<unsigned int>(unsigned int&)'|
    )]+0xda):text_iarchive.cpp||undefined reference to `std::istream& std::istream::_M_extract<unsigned int>(unsigned int&)'|
    ::init()]+0x10a):text_iarchive.cpp||undefined reference to `std::istream& std::istream::_M_extract<unsigned int>(unsigned int&)'|
    ::init()]+0x2ee):text_iarchive.cpp||undefined reference to `std::istream& std::istream::_M_extract<unsigned short>(unsigned short&)'|
    ::init()]+0x10a):text_iarchive.cpp||undefined reference to `std::istream& std::istream::_M_extract<unsigned int>(unsigned int&)'|
    ::init()]+0x2ee):text_iarchive.cpp||undefined reference to `std::istream& std::istream::_M_extract<unsigned short>(unsigned short&)'|
    )]+0xda):text_iarchive.cpp||undefined reference to `std::istream& std::istream::_M_extract<unsigned int>(unsigned int&)'|
    )]+0xda):text_iarchive.cpp||undefined reference to `std::istream& std::istream::_M_extract<unsigned int>(unsigned int&)'|
    )]+0xf4):text_iarchive.cpp||undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::resize(unsigned int, wchar_t)'|
    )]+0xda):text_iarchive.cpp||undefined reference to `std::istream& std::istream::_M_extract<unsigned int>(unsigned int&)'|
    )]+0xda):text_iarchive.cpp||undefined reference to `std::istream& std::istream::_M_extract<unsigned int>(unsigned int&)'|
    )]+0xda):text_iarchive.cpp||undefined reference to `std::istream& std::istream::_M_extract<unsigned int>(unsigned int&)'|
    )]+0xda):text_iarchive.cpp||undefined reference to `std::istream& std::istream::_M_extract<unsigned int>(unsigned int&)'|
    )]+0xda):text_iarchive.cpp||undefined reference to `std::istream& std::istream::_M_extract<unsigned int>(unsigned int&)'|
    )]+0xf4):text_iarchive.cpp||undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::resize(unsigned int, wchar_t)'|
    )]+0xda):basic_text_iprimitive.cpp||undefined reference to `std::istream& std::istream::_M_extract<unsigned short>(unsigned short&)'|
    ::~basic_text_oprimitive()]+0x133):basic_text_oprimitive.cpp||undefined reference to `std::ctype<char>::_M_widen_init() const'|
    ::~basic_text_oprimitive()]+0x133):basic_text_oprimitive.cpp||undefined reference to `std::ctype<char>::_M_widen_init() const'|
    ::save(double)]+0xea):basic_text_oprimitive.cpp||undefined reference to `std::ostream& std::ostream::_M_insert<double>(double)'|
    ::save(float)]+0xe2):basic_text_oprimitive.cpp||undefined reference to `std::ostream& std::ostream::_M_insert<double>(double)'|
    ::save(unsigned char)]+0xe3):basic_text_oprimitive.cpp||undefined reference to `std::ostream& std::ostream::_M_insert<unsigned long>(unsigned long)'|
    ::save(bool)]+0xe3):basic_text_oprimitive.cpp||undefined reference to `std::ostream& std::ostream::_M_insert<bool>(bool)'|
    ||=== Build finished: 39 errors, 0 warnings ===|
    P.S : Dans mon C:\boost_1_46_1\stage\lib, j'ai 44 fichiers .a de 170MO au total.

    Merci D'Avance.
    Au Revoir.

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/10/2012, 18h32
  2. Réponses: 6
    Dernier message: 13/04/2005, 09h18
  3. Aide installation DX9.0b sur VS.net
    Par link26 dans le forum DirectX
    Réponses: 4
    Dernier message: 28/02/2005, 08h58
  4. installer boost sous windows
    Par bigboomshakala dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 16/12/2004, 15h59
  5. [Install] Quelle version d'Eclipse choisir
    Par yassine_23 dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 13/05/2004, 15h57

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