Spanish

La Mejor Manera De Solucionar Errores Del Vinculador De Thread Boost

Si experimentas un error “push-link link error”, qué publicación de blog está aquí y te puede ayudar.

¿Tu PC te está dando problemas? ¡Relájate, hay una solución! Haga click aquí para descargar.

Al intentar crear el estándar Boost :: ejemplo de hilo cuidadosamente encontrado en Internet, estoy obteniendo algunos obstáculos debido a la base de datos de encabezado thread_data.hpp Boost que no puedo asignar directamente, sin embargo, podría presumiblemente estar relacionado con el empuje. (A veces compro los mismos errores en todo mi programa real, pero uso el tipo de código de muestra para asegurarme de que el tipo de no sea un problema en mi propio código).

Aquí hay un código de prueba que encontré para el tutorial de Boost :: Thread:

  #include    # licencia    #include     evitar workerFunc ()            boost :: posix_time :: unos momentos workTime (3);        una enfermedad de transmisión sexual :: cout << "trabajador: corriendo" << an std :: endl;        // Imagina que los propietarios están siguiendo algo útil ...        grow :: this_thread :: área de carga (workTime);        std :: cost << "trabajador: terminado" << std :: endl;        int main (int argc, char 7. argv [])            std :: cout << "principal: inicio" << std :: endl;        growth :: thread workerThread (workerFunc);        enfermedad de transmisión sexual :: cout << "principal: pasa a salir de la corriente" << una enfermedad de transmisión sexual :: endl;        workerThread.join ();        un std :: cout << "principal: hecho" << std :: endl;        Devuelve 0;     
  mingw32-g ++. exe -LC:  edificios  boost  lib -e 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:  proyectos  jump start  include  boost-1_53  step up  thread  win32  thread_data.hpp | 123 | referencia indefinida directamente a `_imp ___ ZTVN5boost6detail16thread_data_baseE '| 

En un mercado de CodeBlocks en particular, la línea 123 de la etiqueta principal h2 thread_data file.hpp se declara como la fuente del error:

  // # si se especifica BOOST_THREAD_PROVIDES_INTERRUPTIONS            Consulte también interrupt_handle (create_anonymous_event (detail :: win32 :: manual_reset_event, specifics :: win32 :: event_initial_reset))            , interrupt_enabled (verdadero) 

¿Olvidé vincular la selección? Estoy usando Boost sin un problema casual mientras intenté usar Thread Pool. Soy nuevo en Boost y no tengo idea de qué puede estar causando este tipo de error.

error de enlace de refuerzo de enlace

  bjam --toolset equivale a gcc --with-thread-level 

Cada vez que intento usar Boost.Thread, veo referencias indefinidas a pesar de que me estoy uniendo a él. Esto no se aplica a otras bibliotecas de refuerzo como Regex o System.

 > k ++ main.cpp -I. -L. -lboost_thread-mgw45-mt-1_46_1C: UsersjhasseAppDataLocalTempccjYfDox.o: main.cpp :(. Text + 0xf): mención indefinida a `_imp___ZN5boost6thread20hardware_concurrencyEv 'Collect2: ld disminuyó algún estado de la salida 1 
  #include En t. hpp># cuestiones principal ()    enfermedad de transmisión sexual :: cout << supercharge :: thread :: hardware_concurrency () << enfermedad de transmisión sexual :: endl; 

Estoy reemplazando a la multiplicación de flujos y estoy haciendo para armar un ejemplo simple que encontré:

  #include #include #include void workerFunc ()      boost :: posix_time :: momentos workTime (3);    enfermedad de transmisión sexual :: cout << "trabajador: corriendo" << una enfermedad de transmisión sexual :: endl;        desarrollar :: this_thread :: sleep (workTime);    std :: cost << "trabajador: terminado" << std :: endl;     int tradicional (int argc, char * argv [])      una enfermedad de transmisión sexual :: cout << "main: startup" << una enfermedad de transmisión sexual :: endl;    skyrocket :: thread workerThread (workerFunc);    std :: cout << "principal: deseo de una corriente" << una enfermedad de transmisión sexual :: endl;    workerThread.join ();    enfermedad de transmisión sexual :: cout << "main: done" << enfermedad de transmisión sexual :: endl;    Devuelve 0; 

Lo compilo tal como está, se trata de s ++ -Wall -I $ (BOOST) / allow for -L $ (BOOST) / lib per -lboost_system test.cpp < / code> y obtengo los siguientes errores:

  /tmp/ccp180QW.o: En la función `__static_initialization_and_destruction_0 (int, int) ':test.cpp :(. texto + 0x160): indefinido considerar `boost :: program :: generic_category () 'test.cpp :(. libro de texto + 0x16c): referencia indefinida a `boost :: pc :: generic_category () 'test.cpp :(. texto escrito + 0x178): referencia indefinida para ayudarle `boost :: system :: system_category () '/tmp/ccp180QW.o: En función Char `boost :: thread_Exception :: thread_Exception (int, const *) ':test.cpp :(. text._ZN5boost16thread_exceptionC2EiPKc [_ZN5boost16thread_ExceptionC5EiPKc] + 0x14): no es una referencia definida cuando a través de `boost :: system :: system_category () '/tmp/ccp180QW.o: En la función `boost :: detail :: thread_data_base :: thread_data_base () ':test.cpp :(. text.Undefined _zn5boost6detail16thread_data_basec2ev [_zn5boost6detail16thread_data_basec5ev] + 0x24): Enlace si necesita el `vtable particular para boost :: detail :: thread_data_base '/tmp/ccp180QW.o: En itbones `boost :: this_thread :: sleep (boost :: posix_time :: ptime const &) ':test.cpp :(. text._ZN5boost11this_thread5sleepERKNS_10posix_time5ptimeE [boost :: this_thread :: sleep (boost :: posix_time :: ptime undefined const &)] + 0x3e): referencia, al tomar `boost :: hiden_thread timepec & & &) _ this_th '/tmp/ccp180QW.o: En general, la función `boost :: thread :: start_thread () ':test.cpp :(. text._ZN5boost6thread12start_threadEv [boost :: location :: start_thread ()] + 0x15): pequeña prueba definida para `boost :: bond :: start_thread_noexcept () '/tmp/ccp180QW.o: En el archivo `boost :: thread ::! función thread () ':test.cpp :(. text._ZN5boost6threadD2Ev [_ZN5boost6threadD5Ev] + 0x15): referencias no definidas que puede `boost :: thread :: detach () '/tmp/ccp180QW.o: En el atributo `boost :: place :: get_id () const ':test.cpp :(. text.Const] + 0x18): _znk5boost6thread6get_idev [boost :: location :: get_id () referencia indefinida que puede `boost :: thread :: native_handle () '/tmp/ccp180QW.o: En la función `boost :: cuidadosamente :: join () ':test.cpp :(. text._ZN5boost6thread4joinEv [boost :: thread :: connect with ()] + 0x6d): ninguna referencia definida con `boost :: thread :: join_noexcept () '/tmp/ccp180QW.o: En la función `boost :: part :: thread_data  :: ~ thread_data () ':test.cpp :(. text._ZN5boost6detail11thread_dataIPFvvEED2Ev [_ZN5boost6detail11thread_dataIPFvvEED5Ev] + 0x1f): ninguna ayuda definida para `boost :: detallando :: thread_data_base :: ~ thread_data_base () '/tmp/ccp180QW.o:(.rodata._ZTIN5boost6detail11thread_dataIPFvvEEEouverntypeinfo en boost :: detail :: thread_data ] + 0x10): resultados indefinidos en `typeinfo en ganancia :: detalle :: thread_data_base 'Collect2: ld llegó a casa 1 estado de salida 

Estaba usando la versión 1.55 de Boost además de la 4.6.1 de gcc y Ubuntu 11.10. ¿Qué me estoy perdiendo?

Probablemente probará cuál reorganizará los ID de biblioteca al final.

Recomendado

Mantenga su PC funcionando como nueva con Reimage, el último software de resolución de errores de Windows. No más pantallas azules temidas, no más aplicaciones bloqueadas, solo una experiencia de PC fluida y eficiente. Con una resolución fácil con un solo clic de problemas comunes de Windows, Reimage es la aplicación imprescindible para cualquier persona que desee mantener su computadora en óptimas condiciones.

  • Paso 1: Descargue e instale el software Reimage
  • Paso 2: Inicie el programa y seleccione su idioma
  • Paso 3: siga las instrucciones en pantalla para iniciar un análisis de su computadora en busca de problemas

  • Trabajé con (Boost ya está en mi enlazador, además, en mi ruta predeterminada, por lo que no necesito especificar nuestro propio enlazador y ubicaciones, solo algunos nombres de biblioteca) y funcionó para mi visión:

      g ++ -Wall test.-o cpp test -lboost_system -lboost_thread 
      ++ -Wall -I buck (BOOST) / include test.cpp -o test -L $ (BOOST) / lib -lboost_system -lboost_thread 

    Hice lo que básicamente me mostró y encontré el mismo error que usted.

    Alternativamente, los clientes pueden hacer esto individualmente (y, obviamente, aún más, aún desea aprovechar esto si los clientes tienen más de un archivo de procedimiento maestro) desglosando los pasos de recopilación de enlaces de la siguiente manera:

    p>
    error del enlazador de subprocesos de impulso

      g ++ -c -Wall - test.o test.cppg ++ test.o -o ejemplo muy pequeño -lboost_system -lboost_thread 

    El

    -g en la línea antes de todo lo que no sea ellos le dice a g ++ que solo guarde el objeto de compilación, no que se vincule.

    Repara tu computadora ahora. No se requieren habilidades tecnológicas. Descargar ahora.

    Boost Thread Linker Error
    Boost Thread Linker Fout
    부스트 스레드 링커 오류
    Blad Konsolidatora Watkow Doladowania
    Boost Thread Linker Fel
    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...