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++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 : 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,

    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 : 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
    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 : 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
    As tu ajouter les fichiers que je t'ai indiqué à ton éditeurs de lien ?

+ 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