Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lib Boost Thread

Apres 2 semaine de recherche...

Sujet résolu
    18 janvier 2011 à 2:38:22

    Salut

    Après quelque tentative avec la bibliothèque de boost je n'ai guerre réussi a utilisé la fonction

    boost:thread ()

    J'ai fait plusieurs recherche sur internet et j'ai essayer d'installer avec la documentation
    de boost sur le site officiel et je n'y est pas arriver



    Voici mon code

    #include <iostream>
    #include <boost/thread.hpp>
    #include <windows.h>
    //#include <pthread.h>
    
    #define NBRUSER 100
    #define PORT 4500
    
    using namespace std;
    
    void test()
    {
        cout << "sa marche" << endl;
    }
    
    int main()
    {
        cout << "Lancement du serveur Soli" << endl;
        //Déclaration des Variables class
        Serveur World(NBRUSER, PORT);
        //Lancement de l'app
        World.lunch();
        boost::thread Connection(boost::bind(&Serveur::CoEngine, &World));
    
        //CreateThread(NULL, 0, Serveur::CoEngine, &World, 0, thread2);
        return 0;
    }
    


    Voici l'erreur que je ressoi

    ::type)]+0x6b)||undefined reference to `_imp___ZN5boost6thread12start_threadEv'|
    
    • Partager sur Facebook
    • Partager sur Twitter
      18 janvier 2011 à 18:13:09

      L'erreur "undefined reference to" veut souvent dire un mauvais paramétrage du linker, vérifie que tu lie bien ton code avec la bibliothèque boost.
      • Partager sur Facebook
      • Partager sur Twitter
        18 janvier 2011 à 23:08:52

        J'ai réussi a compiler la lib mais maintenat j'option ce type d'erreur


        C:\boostReady\lib\libboost_thread-mgw45-mt-1_43.a(thread.o):thread.cpp|| undefined reference to `_Unwind_Resume'|

        :(

        ;) !

        Merci d'avance
        Soliphied
        • Partager sur Facebook
        • Partager sur Twitter
          19 janvier 2011 à 12:33:38

          As-tu compilé boost toi-même, et donc est-ce que le gcc utilisé est le même que celui utilisé pour compiler boost (4.5) ?
          Peux-tu donner la ligne de commande qui génère cette erreur ?
          Pour activer l'affichage de cette commande sous Code::Blocks: Settings -> Compiler & Debugger -> onglet 'Other' -> Compiler logging='Full command line'.
          Recompiler et copier le contenu du panneau 'Build Log' et non 'Build Messages'


          • Partager sur Facebook
          • Partager sur Twitter
            23 janvier 2011 à 0:43:32

            Javais pas compiler avec la même GCC :o merci beaucoup alex et Ozoir tout fonctionne parfaitement maintenant !
            • Partager sur Facebook
            • Partager sur Twitter
              14 juillet 2012 à 8:37:13

              salut j'ai un problème proche du premier énoncer
              debug/main.o: In function `~thread':
              d:/boost_1_50_0/boost_1_50_0/boost/thread/detail/thread.hpp:174: undefined reference to `_imp___ZN5boost6thread6detachEv'
              debug/main.o: In function `thread<void (*)(boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >*), boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >*>':
              d:/boost_1_50_0/boost_1_50_0/boost/thread/detail/thread.hpp:274: undefined reference to `_imp___ZN5boost6thread12start_threadEv'


              j'ai eu 2 erreur similaire au paravent qui mon demander d'ajouter -lwsock32 -lws2_32 a ma commande de compilation donc je me demande si il me manque pas un lib windows sur les threads (le programme se compile sous mon linux) je suis avec ide QTcreator voila mon .pro sous window

              TEMPLATE = app
              CONFIG += console
              CONFIG -= qt
              
              INCLUDEPATH += D:/boost_1_50_0/boost_1_50_0
              LIBS += C:/boost_lib/boost/bin.v2/libs/system/build/gcc-mingw-4.4.0/release/link-static/threading-multi/libboost_system-mgw44-mt-1_50.a
              LIBS += C:/boost_lib/boost/bin.v2/libs/thread/build/gcc-mingw-4.4.0/release/link-static/threading-multi/libboost_thread-mgw44-mt-1_50.a
              LIBS += C:/boost_lib/boost/bin.v2/libs/filesystem/build/gcc-mingw-4.4.0/release/link-static/threading-multi/libboost_filesystem-mgw44-mt-1_50.a
              LIBS += C:/boost_lib/boost/bin.v2/libs/serialization/build/gcc-mingw-4.4.0/release/link-static/threading-multi/libboost_serialization-mgw44-mt-1_50.a
              LIBS += -lwsock32 -lws2_32
              SOURCES += main.cpp


              oui j'ai déjà install boost avec une compilation mingw.

              donc si vous avait une réponse pour résoudre cette erreur je serait extrêmement reconnaissant de me la faire partager ^^ merci d'avance.
              • Partager sur Facebook
              • Partager sur Twitter
                31 juillet 2012 à 22:33:33

                la solution est : ajouter avant chaque include de thread (#define BOOST_THREAD_USE_LIB)
                uniquement nécessaire sous windows.
                • Partager sur Facebook
                • Partager sur Twitter

                Lib Boost Thread

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown