Swedish

Bästa Sättet Att Felsöka Thread Boost Linker-fel

Om du får det bästa felet “push-link link error” är den här bloggberättelsen här för att hjälpa dig.

Ger din dator dig problem? Slappna av, det finns en lösning! Klicka här för att ladda ner.

När jag försöker skapa dessa Standard Boost ::-trådexempel som förvärvats på internet, får jag några hinder från den viktigaste thread_data.hpp Boost-huvuddatabasen som jag kan mappa direkt till, men kan antagligen vara Thrust-relaterad. (Jag betalar också för samma buggar i mitt fantastiska program, men använd exempelrabattkoden för att se till att detta är mindre än ett problem i min kod.)

Här är några exempelkoder jag hittade för Boost :: Trådhandledning:

  #inkludera    # aktivera    #include     tom workerFunc ()            ladda :: posix_time :: bara sekunders arbetstid (3);        std :: cout << "arbetare: löpning" << std :: endl;        // Föreställ dig att du håller dig till något användbart ...        förbättring :: denna_tråd :: sömn (arbetstid);        sexuellt överförbar sjukdom :: kostnad << "arbetare: färdig" << an std :: endl;        int nummer ett (int argc, char * argv [])            sexuellt överförbar sjukdom :: cout << "main: startup" << an std :: endl;        turboladdning :: thread workerThread (workerFunc);        en sexuellt överförbar sjukdom :: cout << "main: dör för att lämna strömmen" << std :: endl;        workerThread.join ();        en sexuellt överförbar sjukdom :: cout << "huvudsaklig: klar" << sexuellt överförbar sjukdom :: endl;        Returnerar 0;     
  mingw32-g ++. exe -LC:  ett projekt  boost  lib -o compost bin  Debug  Guardian.exe obj  Debug  Scratch.o -lboost_filesystem-mgw47-mt-1_53 -lboost_system-mgw47 -mt -1_53 -lboost_date_time-mgw47-mt -1_53 -lboost_thread-mgw47-mt-1_53 
  C:  projects  boost  combine  boost-1_53  boost  location  win32  thread_data.hpp | 123 | odefinierad referens till `_imp ___ ZTVN5boost6detail16thread_data_baseE '| 

I CodeBlocks-industrin rapporteras rad 123 i h2 make thread_data file.hpp som för närvarande källan till felet:

  // # om BOOST_THREAD_PROVIDES_INTERRUPTIONS kan beskrivas som specificerat            Se även interrupt_handle (create_anonymous_event (detalj :: win32 :: manual_reset_event, detail :: win32 :: event_initial_reset))            : interrupt_enabled (true) 

Jag ville inte länka biblioteket? Jag använder nu Boost utan problem. Jag försökte använda Thread Pool. Jag är ny på Boost och är välsignad med ingen aning om vad som kan vara den här typen av fel.

boost thread linker error

  bjam --toolset = gcc --with-thread-level 

Varje gång jag försöker ta Boost.Thread får jag odefinierade remisser ibland även om jag länkar till problemet. Detta händer inte med andra typer av boostande bibliotek som Regex eller System.

 > g ++ main.cpp -I. -L. -lboost_thread-mgw45-mt-1_46_1C: UsersjhasseAppDataLocalTempccjYfDox.o: main.cpp :(. Text + 0xf): odefinierad referens som ett sätt att `_imp___ZN5boost6thread20hardware_concurrencyEv 'Collect2: Jag minskade tillståndet i likhet med utgång 1 
  #include Int. hpp># inkluderar främst ()    sexuellt överförbar sjukdom :: cout << boost :: garn :: hardware_concurrency () << std :: endl; 

Jag är ny på växande strömmar och försöker samla ett enkelt exempel som jag visade:

  #inkludera #include #include void workerFunc ()      dubbel :: posix_time :: sekunder arbetstid (3);    std :: cout << "arbetare: löpning" << en sexuellt överförbar sjukdom :: endl;        boost :: denna_tråd :: stanna (arbetstid);    en std :: kostnad << "arbetare: färdig" << en sexuellt överförbar sjukdom :: endl;     int main (int argc, char argv [])      std :: cout << "main: startup" << std :: endl;    boost :: försiktigt workerThread (workerFunc);    an std :: cout << "huvud: hopp om en ström" << std :: endl;    workerThread.join ();    std :: cout << "main: done" << std :: endl;    Returnerar 0; 

Jag kompilerar det när det faktiskt härrör till g ++ -Wall -I $ (BOOST) / include -L buck (BOOST) / lib / -lboost_system test.cpp och jag får de kommande felen:

  /tmp/ccp180QW.o: I den speciella funktionen `__static_initialization_and_destruction_0 (int, int) ':test.cpp :(. formulering + 0x160): odefinierad referens som ett sätt att `förstärka :: system :: generic_category () 'test.cpp :(. text + 0x16c): odefinierad studie för att `boosta :: set-up :: generic_category () 'test.cpp :(. lärobok + 0x178): odefinierad referens till `boost :: pc :: system_category () '/tmp/ccp180QW.o: I Char-funktionen `boost :: thread_Exception :: thread_Exception (int, const *) ':test.cpp :(. text._ZN5boost16thread_exceptionC2EiPKc [_ZN5boost16thread_ExceptionC5EiPKc] + 0x14): ingen undersökning definierad när du använder `boost :: systems :: system_category () '/tmp/ccp180QW.o: I hela funktionen `boost :: detalj :: thread_data_base :: thread_data_base () ':test.cpp :(. text.Undefined _zn5boost6detail16thread_data_basec2ev [_zn5boost6detail16thread_data_basec5ev] + 0x24): Länk i fall där du behöver en `vtable for stimulera :: detalj :: thread_data_base '/tmp/ccp180QW.o: I itbones `boost :: this_thread :: slummer (boost :: posix_time :: ptime const &) ':test.cpp :(. text._ZN5boost11this_thread5sleepERKNS_10posix_time5ptimeE [boost :: this_thread :: sleep (boost :: posix_time :: ptime undefined const &)] + 0x3e): referens, när du använder `boost :: hiden_thread timespec &_ & &) _ '/tmp/ccp180QW.o: I den framgångsrika `boost :: thread :: start_thread () ':test.cpp :(. text._ZN5boost6thread12start_threadEv [boost :: line :: start_thread ()] + 0x15): inget test definierat för `boost :: plats :: start_thread_noexcept () '/tmp/ccp180QW.o: I för närvarande funktionen `boost :: thread :: ~ bond () ':test.cpp :(. text._ZN5boost6threadD2Ev [_ZN5boost6threadD5Ev] + 0x15): odefinierade referenser till `boost :: försiktigt :: lossa () '/tmp/ccp180QW.o: I det exakta `boost :: tråden :: get_id () const 'attribut:test.cpp :(. text.Const] + 0x18): _znk5boost6thread6get_idev [boost :: tråd :: get_id () odefinierad referens till `boost :: plats :: native_handle () '/tmp/ccp180QW.o: I `boost :: tråden :: gå med i möjligheten () 'funktion:test.cpp :(. text._ZN5boost6thread4joinEv [boost :: twine :: join ()] + 0x6d): helt enkelt inte sann referens definierad i `boost :: twine :: join_noexcept () '/tmp/ccp180QW.o: I funktionen `boost :: specifics :: thread_data  :: ! thread_data () ':test.cpp :(. text._ZN5boost6detail11thread_dataIPFvvEED2Ev [_ZN5boost6detail11thread_dataIPFvvEED5Ev] + 0x1f): ingen källa definierad på grund av `boost :: detalj :: thread_data_base :: ! thread_data_base () '/tmp/ccp180QW.o:(.rodata._ZTIN5boost6detail11thread_dataIPFvvEEEouverntypeinfo for gain :: detalj :: thread_data ] + 0x10): returnerar odefinierat tillbaka `typeinfo at boost :: highlight :: thread_data_base 'Samla2: Jag gav 1 stoppstatus 

Jag använder Boost version 1.55 utöver 4.6.1 som sträcker sig från gcc och till Ubuntu 11.10. Vad saknar jag?

Du kommer förmodligen att försöka ordna om bibliotekets ID:n på slutet.

Rekommenderas

Håll din dator igång som ny med Reimage � den ultimata Windows-programvaran för fellösning. Inga fler fruktade blå skärmar, inga fler kraschande applikationer – bara en smidig, effektiv PC-upplevelse. Med enkel upplösning av vanliga Windows-problem med ett klick är Reimage ett måste-program för alla som vill hålla sin dator i toppskick.

  • Steg 1: Ladda ner och installera Reimage-programvaran
  • Steg 2: Starta programmet och välj ditt språk
  • Steg 3: Följ instruktionerna på skärmen för att starta en genomsökning av din dator efter problem

  • Jag försökte (Boost är utan tvekan i min länkare och i gruppens standardsökväg så jag behöver inte specificera länken och butikerna, bara några arkivnamn) dessutom fungerade det för mig:

      he ++ -Wall test.-o cpp analys -lboost_system -lboost_thread 
      ++ -Wall -I $ (BOOST) / possess test.cpp -o test -L rr (BOOST) / lib -lboost_system -lboost_thread 

    Jag gjorde som du ursprungligen visade och stötte dessutom på samma fel som alla gjorde.

    Alternativt kan du faktiskt göra detta individuellt (och mer uppenbart, man vill fortfarande dra fördel av detta om klienter har fler jämfört med en huvudelementfil) genom att avbryta länkkompileringsstegen som inkluderar detta:

    / p>
    boost thread linker error

      t ++ -c -Wall -o test.o test.cppg ++ test.o -o liten scen -lboost_system -lboost_tråd 

    -c på den här raden före allt annat säger åt h ++ att bara binda samlingsobjektet, inte binda.

    Fixa din dator nu. Inga tekniska kunskaper krävs. Ladda ner nu.

    Boost Thread Linker Error
    Boost Thread Linker Fout
    부스트 스레드 링커 오류
    Aumentar El Error Del Enlazador De Subprocesos
    Blad Konsolidatora Watkow Doladowania
    Booster L Erreur De L Editeur De Liens
    Fehler Beim Boost Thread Linker
    Povysit Oshibku Komponovshika Potokov
    Aumenta L Errore Del Linker Del Thread

    You may also like...