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 :

Probl�me de linkage avec Code::Blocks


Sujet :

Boost C++

  1. #1
    Membre confirm�
    Homme Profil pro
    D�veloppeur de jeux vid�o
    Inscrit en
    Ao�t 2011
    Messages
    88
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur de jeux vid�o

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 88
    Par d�faut Probl�me de linkage avec Code::Blocks
    Bonjour,

    Voil� des jours que je recherche, teste les solutions indiqu�es sur le net, mais je n'arrive toujours pas � r�soudre mon probl�me.

    Pour un support plus efficace, je vais vous indiquer toute la proc�dure que j'ai faite, afin que vous puissiez me dire ce que j'aurais pu faire de mal.

    Tout d'abord, j'ai t�l�charg� la derni�re version de boost (1.47.0) que j'ai plac� dans "C:\boost\boost_1_47_0\".

    J'ai suivi plusieurs fois � la lettre le tutoriel Getting Started Guide propos� par le site.

    J'ai �galement t�l�charg� la derni�re version possible de C::B.

    Apr�s la copie, je vais dans "Settings/Compiler and debugger", onglet "Search directories" puis onglet "Compiler" et l� j'ajoute :
    • C:\boost\boost_1_47_0
    • C:\boost\boost_1_47_0\boost


    De cette fa�on un simple projet de ce type fonctionne :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <boost/lambda/lambda.hpp>
    #include <iostream>
    #include <iterator>
    #include <algorithm>
     
    int main()
    {
        using namespace boost::lambda;
        typedef std::istream_iterator<int> in;
     
        std::for_each(
            in(std::cin), in(), std::cout << (_1 * 3) << " " );
    }
    En suivant le tutoriel de boost, j'arrive � la section 5.2, j'utilise la ligne de commande pour me placer sur la racine de boost_1_47_0 et j'effectue ceci :
    Deux dossiers apparaissent :
    • bin.v2
    • stage


    J'ai �galement un bjam.exe qui est apparu (utilis� par .\b2 si je ne m'abuse).

    A la fin du building, je place comme indiqu� le dossier "C:\boost\boost_1_47_0\stage\lib" dans "Settings/Compiler and debugger" onglet "Search directories" puis onglet "Linker".

    Ensuite, je teste le projet suivant :
    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
    #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;
        }
    }
    Et l� j'obtiens 40 erreurs, toutes des "undefined reference to ...".

    J'ai d� faire quelque chose de travers, mais � force de refaire le tutoriel officiel, je me demande bien quoi ...

  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 : 35
    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,

    Je n'en suis pas certain, mais il me semble qu'il y a une biblioth�que � linker pour utiliser boost::regex. Regardes dans le dossier des biblioth�ques de boost si c'est le cas, et si oui ajoute le fichier qu'il faut au linker.

  3. #3
    Membre confirm�
    Homme Profil pro
    D�veloppeur de jeux vid�o
    Inscrit en
    Ao�t 2011
    Messages
    88
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur de jeux vid�o

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 88
    Par d�faut
    J'ai �galement des "undefined reference to ..." avec asio par exemple ... Je ne vois pas trop quoi rajouter, mis � part le dossier stage/lib/.

  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 : 35
    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
    Plus de probl�me pour boost::regex ?

    Selon ce que tu fais comme code asio peut avoir besoin de boost::system, c'est donc elle qu'il faut linker.

    Et apr�s il y a des biblioth�ques d�pendant de la plateforme je crois (-lwsock32 -lws2_32 sous windows il me semble, il faut potasser la doc pour t'en assurer), et eventuellement un define (-D_WIN32_WINNT=0x0501 dans un code que j'avais utilis� pour tester, regardes dans la doc ca depend de ton windows je crois).

  5. #5
    Membre confirm�
    Homme Profil pro
    D�veloppeur de jeux vid�o
    Inscrit en
    Ao�t 2011
    Messages
    88
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur de jeux vid�o

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 88
    Par d�faut
    Si, toujours le probl�me, en faite je ne vois pas du tout quoi ajouter ...
    Pour asio, par exemple si je fais un main() vide avec un simple #include <boost/asio.hpp>, j'ai encore un undefined reference ...

    J'ai d�j� d�fini le _WIN32_WINDOWS dans mes options (sinon j'aurais un warning).

    Je ne comprend simplement pas pourquoi il n'y a aucune doc claire � ce propos.

  6. #6
    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 : 35
    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
    As tu ajouter les fichiers que je t'ai indiqu� � ton �diteurs de lien ?

  7. #7
    Membre confirm�
    Homme Profil pro
    D�veloppeur de jeux vid�o
    Inscrit en
    Ao�t 2011
    Messages
    88
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur de jeux vid�o

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 88
    Par d�faut
    Oui, je les ai ajout� dans Settings/Compiler and debugger/Linker settings/.
    �a ne change rien.

    Voici quelques screens de mes settings qui seront peut-�tre utiles :





  8. #8
    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 : 35
    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
    Il manque les fichiers de biblioth�ques de boost::system et boost::regex. Regardes dans le dossier lib de boost ils y sont (plusieurs version selon ce que tu fais : static, debug, multi-thread, ect).

  9. #9
    Membre confirm�
    Homme Profil pro
    D�veloppeur de jeux vid�o
    Inscrit en
    Ao�t 2011
    Messages
    88
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur de jeux vid�o

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 88
    Par d�faut
    Mon probl�me, c'est qu'� part stage/lib, je n'ai pas de dossier lib/.

    J'ai donc retent� une installation avec l'installeur de BoostPro Computing, � pr�sent j'ai un dossier lib/ � la racine de boost rempli de .dll et de .lib, mais tous pour visual studio ... Je pense qu'il faut que j'obtienne ceux pour mingw.

    Je dois passer par bjam avec un toolset=gcc ?

  10. #10
    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 : 35
    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
    Pour ta question c'est clairement �crit dans la doc concernant l'installation de boost (la r�ponse est oui, b2 pas bjam par contre).

    Mais si tu as un dossier stage c'est que tu avais d�j� compiler boost normalement. Il y avait pas les dits fichier dans stage/lib ?

  11. #11
    Membre confirm�
    Homme Profil pro
    D�veloppeur de jeux vid�o
    Inscrit en
    Ao�t 2011
    Messages
    88
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur de jeux vid�o

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 88
    Par d�faut
    Mais si tu as un dossier stage c'est que tu avais d�j� compiler boost normalement. Il y avait pas les dits fichier dans stage/lib ?
    Lors de ma premi�re installation, j'ai d� compiler les sources, donc oui je suis pass� par la commande .\b2 et j'ai install� dans stage/lib mais ce dossier ne contenait au final que des .lib (inutilisable par mingw si j'en crois ce lien).

    A ma deuxi�me installation, avec l'installeur, j'ai directement un dossier boost/lib qui contenait des .lib et des .dll cette fois-ci. Mais dans le nom de ces fichiers, on retrouve toujours msvc donc j'en ai d�duit que ce n'est pas les fichiers qu'il faut pour mingw).

    Pour ta question c'est clairement �crit dans la doc concernant l'installation de boost (la r�ponse est oui, b2 pas bjam par contre).
    Maintenant, quand je veux faire un .\b2 avec comme toolset gcc, j'ai 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
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    C:\boost\boost_1_47_0>.\b2 stage --build-type=complete --build-dir="C:\boost\boost_1_47_0\build" --toolset=gcc --stagedir="C:\boost\boost_1_47_0"
    C:/boost/boost_1_47_0/tools/build/v2/tools\gcc.jam:129: in gcc.init from module
    gcc
    error: toolset gcc initialization:
    error: no command provided, default command 'g++' not found
    error: initialized from project-config.jam:3
    C:/boost/boost_1_47_0/tools/build/v2/build\toolset.jam:38: in toolset.using from
     module toolset
    C:/boost/boost_1_47_0/tools/build/v2/build\project.jam:888: in using from module
     project-rules
    project-config.jam:3: in modules.load from module project-config
    C:/boost/boost_1_47_0/tools/build/v2\build-system.jam:257: in load-config from m
    odule build-system
    C:/boost/boost_1_47_0/tools/build/v2\build-system.jam:423: in load-configuration
    -files from module build-system
    C:/boost/boost_1_47_0/tools/build/v2\build-system.jam:555: in load from module b
    uild-system
    C:\boost\boost_1_47_0\tools\build\v2/kernel\modules.jam:283: in import from modu
    le modules
    C:\boost\boost_1_47_0\tools\build\v2\kernel\bootstrap.jam:142: in boost-build fr
    om module
    C:\boost\boost_1_47_0\boost-build.jam:17: in module scope from module
     
     
    C:\boost\boost_1_47_0>

  12. #12
    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 : 35
    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
    Ouvres une invite de commande et tapes g++, si t'obtient un message du genre "commande inconnue" c'est qu'il arrive pas � trouver g++, il faut que tu rajoutes le dossier des binaires (/bin) de ton MinGW dans la variable d'environnement path.

    J'ai un peu de mal � comprendre comment t'as pu te retrouver avec des biblioth�que pour mvcs si tu compiles avec gcc, t'as les deux compilateurs sur ta machine ?

  13. #13
    Membre confirm�
    Homme Profil pro
    D�veloppeur de jeux vid�o
    Inscrit en
    Ao�t 2011
    Messages
    88
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur de jeux vid�o

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 88
    Par d�faut
    J'ai effectivement les deux, j'ai tent� de voir si �a marchait mieux avec Visual 2010 mais j'ai aussi des probl�mes ... Je suis pas dou� de ce c�t�-l�.

    Effectivement, lorsque je tape g++, j'ai une commande interne non reconnue.
    Je suis all� voir dans mes variables d'environnements, j'ai d�j� une variable path, je dois donc la nommer comment ?

    PS : merci de l'attention que tu me portes. j'ai vraiment l'impression de passer pour un d�butant avec mon probl�me ^^"

  14. #14
    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 : 35
    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
    Faut rajouter le chemin des binaires � la variables d'environement path. Tu te mets sur la variable path dans variables syst�me, tu fais modifier, tu te mets au bout de la zone de texte et tu mets ";" puis le chemin de ton dossier o� est g++ "C:\MinGW\bin\" par exemple (ne tape pas les " dans la zone de texte).

  15. #15
    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,

    Lorsque j'ai un PC avec pl�thore de compilateurs, pour ne pas perturber la compilation de boost, je fais comme suit :
    1/ J'ouvre une fen�tre de commande dos ;
    2/ J'ex�cute les commandes suivantes :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    REM PATH limité (build_tool\bin est le répertoire de b2) : 
    set PATH=C:\msys\1.0\bin;C:\MinGW32\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\boost_1_47_0\build_tool\bin
    REM Effacement des variables liées à Visual C++ (2008 et 2010) :
    set VS90COMNTOOLS=
    set VS100COMNTOOLS=
    REM La compilation
    b2 --build-dir="C:\boost_1_47_0\build\MinGW" toolset=gcc --build-type=complete stage

  16. #16
    Membre confirm�
    Homme Profil pro
    D�veloppeur de jeux vid�o
    Inscrit en
    Ao�t 2011
    Messages
    88
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur de jeux vid�o

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 88
    Par d�faut
    Merci � vous deux ! Apr�s un bon moment, j'ai enfin un dossier lib avec mes .a et .dll pour mingw44.

    Plus qu'� ajouter les bons fichiers pour boost::system et boost::regex pour voir si �a marche ... le probl�me c'est que dans build\MinGW\boost\bin.v2\libs\ j'ai tellement de choix que je sais pas quoi prendre (du genre choisir entre debug ou release, link-static, threading-multi, etc ...).

    Je prend lequel ?

  17. #17
    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 : 35
    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
    Ca d�pends de ce que tu veux, on peut pas choisir � ta place, les diff�rentes versions des fichiers sont assez clair il me semble ! Apr�s c'est � toi de savoir si t'es en debug/release, mt, static, ect ... on peut pas vraiment choisir � ta place.

  18. #18
    Membre confirm�
    Homme Profil pro
    D�veloppeur de jeux vid�o
    Inscrit en
    Ao�t 2011
    Messages
    88
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur de jeux vid�o

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 88
    Par d�faut
    C'est tout bon ! Le code marche, et tout et tout, merci encore !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Probl�me de compilation avec Code Block
    Par med19972004 dans le forum Code::Blocks
    R�ponses: 2
    Dernier message: 16/09/2011, 16h32
  2. Probl�me de compilation avec Code::Blocks
    Par xvid110 dans le forum OpenCV
    R�ponses: 12
    Dernier message: 13/06/2011, 23h12
  3. Probl�me de compilation avec Code Block
    Par med19972004 dans le forum C++
    R�ponses: 5
    Dernier message: 04/02/2011, 23h49
  4. Probl�me de fonctionnement avec Code::Blocks
    Par turbo225 dans le forum Code::Blocks
    R�ponses: 1
    Dernier message: 20/12/2008, 12h14
  5. Probl�me de librairie avec code blocks sous Linux
    Par philmor34 dans le forum Code::Blocks
    R�ponses: 1
    Dernier message: 31/10/2008, 13h25

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