German

Beste Methode Zur Behebung Von Thread-Boost-Linker-Fehlern

Wenn Sie einen fabelhaften “Push-Link-Link-Fehler” erhalten, ist dieser Beitrag auf der World Wide Website hier, um Ihnen zu helfen.

Ihr PC macht Ihnen Probleme? Entspann dich, es gibt eine Lösung! Klicke hier zum herunterladen.

Beim Versuch, das im Internet gefundene Thread-Beispiel von Standard Boost :: zu erstellen, habe ich wirklich das Gefühl, dass die Thread_data.hpp Boost-Header-Datenbank auf einige Hindernisse stößt, die ich nicht direkt zuordnen kann, aber könnte vermutlich mit dem Schub zusammenhängen. (Ich kaufe definitiv die gleichen Fehler in einem brandneuen echten Programm, aber verwende den Übungscode, um sicherzustellen, dass dies in meinem brandneuen Code kein Problem sein könnte.)

Hier ist ein Beispielcode, den ich für das Boost :: Thread-Tutorial gefunden habe:

  #include    # enable    #include     nutzloser ArbeiterFunc ()            boost :: posix_time :: secs workTime (3);        std :: cout << "worker: running" << sexuell übertragbare Krankheit :: endl;        // Stellen Sie sich vor, Sie verfolgen mit Sicherheit etwas Nützliches ...        Erweiterung :: this_thread :: sleep (workTime);        eine sexuell übertragbare Krankheit :: Kosten << "Arbeiter: fertig" << std :: endl;        int substantiell (int argc, char 6 . argv [])            an std :: cout << "main: startup" << std :: endl;        Turboladung :: thread workerThread (workerFunc);        Geschlechtskrankheit :: cout << "main: stirbt um wirklich aus dem Strom zu kommen" << Geschlechtskrankheit :: endl;        workerThread.join();        Geschlechtskrankheit :: cout << "main: done" << Geschlechtskrankheit :: endl;        Gibt 0 zurück;     
  mingw32-g++. exe -LC:  exudes  boost  lib -o trash  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  umfassen  boost-1_53  boost  vorsichtig  win32  thread_data.hpp | 123 | undefinierter Verweis auf `_imp ___ ZTVN5boost6detail16thread_data_baseE '| 

Auf dem CodeBlocks-Markt wird Zeile 123 des h2-Tags thread_data file.hpp genau wie die Fehlerquelle gemeldet:

  // # wenn BOOST_THREAD_PROVIDES_INTERRUPTIONS angegeben werden konnte            Siehe auch interrupt_handle (create_anonymous_event (detail :: win32 :: manual_reset_event, detail :: win32 :: event_initial_reset))            , Interrupt_enabled (wahr) 

Ich habe vergessen, die Bibliothek zu verlinken? Ich verwende Boost ohne Funktionsstörung, während ich versucht habe, Thread Pool zu verwenden. Ich bin neu bei Boost und habe keine Ahnung, was diese Art von Fehler verursachen könnte.

Boost-Thread-Linker-Fehler

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

Jedes Mal, wenn ich versuche, Boost.Thread zu verwenden, erhalte ich undefinierte Verweise, obwohl ich darauf verlinke. Dies geschieht nicht mit anderen Boosting-Bibliotheken wie Regex oder System.

 > g ++ main.cpp -I. -L. -lboost_thread-mgw45-mt-1_46_1C: UsersjhasseAppDataLocalTempccjYfDox.o: main.cpp :(. Text + 0xf): undefinierte Referenzzeit für `_imp___ZN5boost6thread20hardware_concurrencyEv 'Collect2: ld hat die Ansage von Ausgang 1 dekrementiert 
  #include Int. hpp># besitzen Prinzipal ()    an std :: cout << boost :: place :: hardware_concurrency () << an std :: endl; 

Ich bin neu im Multiplizieren von Streams und versuche gerade, ein einfaches Beispiel zusammenzustellen, das ich gefunden habe:

  #include #include #include void workerFunc ()      skyrocket :: posix_time :: while workTime (3);    eine sexuell übertragbare Krankheit :: cout << "worker: running" << eine sexuell übertragbare Krankheit :: endl;        boost :: this_thread :: sleep (workTime);    eine sexuell übertragbare Krankheit :: Kosten << "Arbeiter: fertig" << std :: endl;     int main (int argc, char * argv [])      std :: cout << "main: startup" << sexuell übertragbare Krankheit :: endl;    :: thread workerThread (workerFunc) stark verbessern;    an std :: cout << "main: chance for a stream" << eine sexuell übertragbare Krankheit :: endl;    workerThread.join();    std :: cout << "main: done" << sexuell übertragbare Krankheit :: endl;    Gibt 0 zurück; 

Ich kompiliere es, wenn die Software zu g ++ -Wall -I $ (BOOST) / include -L $ (BOOST) / lib oder -lboost_system test.cpp und ich erhalte die folgenden Fehler:

  /tmp/ccp180QW.o: In der Funktion `__static_initialization_and_destruction_0 (int, int) ':test.cpp :(. text + 0x160): undefinierte Erwähnung von `boost :: system :: generic_category () 'test.cpp :(. text + 0x16c): undefinierter Verweis auf `boost :: feature :: generic_category () 'test.cpp :(. eine Textnachricht + 0x178): undefinierte Referenz um `boost :: system :: system_category () '/tmp/ccp180QW.o: In der Char-Funktion `boost :: thread_Exception :: thread_Exception (int, const *) ':test.cpp :(. text._ZN5boost16thread_ExceptionC2EiPKc [_ZN5boost16thread_ExceptionC5EiPKc] + 0x14): Vollständige Referenz definiert bei Verwendung von `boost :: setup :: system_category () '/tmp/ccp180QW.o: In der Funktion `boost :: Tiefe :: thread_data_base :: thread_data_base () ':test.cpp :(. text.Undefined _zn5boost6detail16thread_data_basec2ev [_zn5boost6detail16thread_data_basec5ev] + 0x24): Link wenn du eine `vtable bezüglich Boost brauchst :: detail :: thread_data_base '/tmp/ccp180QW.o: In itbones `boost :: this_thread :: slumber (boost :: posix_time :: ptime const &) ':test.cpp :(. text._ZN5boost11this_thread5sleepERKNS_10posix_time5ptimeE [boost :: this_thread :: sleep (boost :: posix_time :: ptime undefined const &)] + 0x3e): Referenz bei Auswahl von `boost :: hiden_thread timespec &_th & .) _ this '/tmp/ccp180QW.o: Im Element `boost :: thread :: start_thread() ':test.cpp :(. text._ZN5boost6thread12start_threadEv [boost :: location :: start_thread ()] + 0x15): kleiner Test definiert für `boost :: post :: start_thread_noexcept () '/tmp/ccp180QW.o: In der genauen `boost :: thread :: ~ post() 'Funktion:test.cpp :(. text._ZN5boost6threadD2Ev [_ZN5boost6threadD5Ev] + 0x15): undefinierte Verweise auf `boost :: place :: detach() '/tmp/ccp180QW.o: Im `boost :: Thread :: get_id() const 'Attribut:test.cpp :(. text.Const] + 0x18): _znk5boost6thread6get_idev [boost :: bond :: get_id () undefinierte Referenz auf `boost :: thread :: native_handle () '/tmp/ccp180QW.o: In der `boost :: vorsichtig thread :: join() 'Funktion:test.cpp :(. text._ZN5boost6thread4joinEv [boost :: thread :: join ()] + 0x6d): keine Referenz definiert von `boost :: thread :: join_noaußer () '/tmp/ccp180QW.o: In der Funktion `boost :: Specifications :: thread_data  :: ! thread_data () ':test.cpp :(. text._ZN5boost6detail11thread_dataIPFvvEED2Ev [_ZN5boost6detail11thread_dataIPFvvEED5Ev] + 0x1f): keine Quelle aufgeführt für `boost :: detail :: thread_data_base :: ~ thread_data_base () '/tmp/ccp180QW.o:(.rodata._ZTIN5boost6detail11thread_dataIPFvvEEEouverntypeinfo zur Unterstützung von Boost :: Detail :: thread_data ] + 0x10): Rückgabe undefiniert in `typeinfo at boost :: aspekt :: thread_data_base 'Collect2: ld hat einen bestimmten Exit-Status zurückgegeben 

Ich verwende Boost Version 1.55 zusätzlich zu 4.6.1 wie gcc und Ubuntu 11.10. Was vermisse ich?

Sie werden wahrscheinlich versuchen, die Bibliotheks-IDs am Rand anzuordnen.

Empfohlen

Lassen Sie Ihren PC mit Reimage – der ultimativen Windows-Fehlerbehebungssoftware – wie neu laufen. Keine gefürchteten Blue Screens mehr, keine abstürzenden Anwendungen mehr – nur ein reibungsloses, effizientes PC-Erlebnis. Mit der einfachen Ein-Klick-Lösung gängiger Windows-Probleme ist Reimage die unverzichtbare Anwendung für jeden, der seinen Computer in Top-Zustand halten möchte.

  • Schritt 1: Laden Sie die Reimage-Software herunter und installieren Sie sie
  • Schritt 2: Starten Sie das Programm und wählen Sie Ihre Sprache aus
  • Schritt 3: Befolgen Sie die Anweisungen auf dem Bildschirm, um einen Scan Ihres Computers nach Problemen zu starten

  • Ich habe es versucht (Boost ist wahrscheinlich bereits in meinem Linker und in meinem Standardpfad, sodass ich den Linker nie mit Standorten angeben muss, nur ein paar Repository-Namen) und es hat bei mir funktioniert: < /p>

      g ++ -Wandtest.-o cpp -lboost_system -lboost_thread 
      ++ -Wall -I $ (BOOST) für jedes Include test.cpp -o test -L Einkommen (BOOST) / lib -lboost_system -lboost_thread 

    Ich habe genau das getan, was Sie ursprünglich demonstriert haben, und bin auf denselben Fehler gestoßen wie Sie.

    Alternativ können Sie dies auch einzeln tun (und mehr noch, Sie möchten sich immer noch dafür entlohnen, wenn Clients sehr viel als eine Master-Element-Datei haben), indem Sie die Änderungen an der Link-Kompilierung wie folgt aufschlüsseln:
    < br>

    / p>
    Boost-Thread-Linker-Fehler

      r ++ -c -Wall -o test.o test.cppg ++ test.o -o small als Beispiel -lboost_system -lboost_thread 

    Das

    -c, das die Zeile vor allem anderen trägt, zeigt, dass g ++ nur den größten Teil des Kompilierungsobjekts bindet, nicht bindet.

    Reparieren Sie jetzt Ihren Computer. Keine technischen Fähigkeiten erforderlich. Jetzt downloaden.

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

    You may also like...