Russian

Лучший способ устранения ошибок компоновщика Thread Boost

Если семьи получают ошибку «ошибка ссылки push-link», вам может помочь сообщение в блоге с идеями.

Ваш компьютер доставляет вам неприятности? Расслабьтесь, есть решение! Нажмите сюда для того, чтобы скачать.

При генерации для создания примера Standard Boost :: thread, найденного в Интернете, я получаю несколько камней преткновения из хранилища данных заголовка thread_data.hpp, которые я не могу напрямую сопоставить, но предположительно мог быть коррелирован с Thrust. (Я также покупаю тех же беспомощных муравьев в своей реальной программе, но помогаю образцу кода сделать это естественным образом, когда дело доходит до моего кода.)

Вот многочисленные примеры кода, которые я нашел для типа учебника Boost :: Thread:

  #include    # возможно    #include     void workerFunc ()            boost :: posix_time :: секунды workTime (3);        венерические заболевания :: cout << "worker: running" << венерические заболевания :: endl;        // Представьте, что вы следите за чем-то бесценным ...        boost :: this_thread :: ночного сна (workTime);        std :: закупочная цена << "worker: finished" << std :: endl;        int main (int argc, char 7. argv [])            std :: cout << "main: startup" << std :: endl;        boost :: thread workerThread (workerFunc);        std :: cout << "main: не удается выйти из потока" << болезнь, передающаяся половым путем :: endl;        workerThread.join ();        std :: cout << "main: done" << std :: endl;        Возвращает 0;     
  mingw32-g ++. exe -LC:  projects  boost  lib -o 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  bump  include  boost-1_53  bump  thread  win32  thread_data.hpp | 123 | неопределенная ссылка на `_imp ___ ZTVN5boost6detail16thread_data_baseE '| 

На рынке CodeBlocks строка 123, связанная с тегом h2 thread_data file.hpp, будет указана как источник большей части ошибки:

  // # пока указан BOOST_THREAD_PROVIDES_INTERRUPTIONS            См. Также interrupt_handle (create_anonymous_event (detail :: win32 :: manual_reset_event, data :: win32 :: event_initial_reset))            , interrupt_enabled (истина) 

Я забыл связать вашу библиотеку? Я использую Boost, и никаких проблем, пока я пробовал использовать Thread Pool. Я новичок в Boost и понятия не имею, что именно может вызывать этот тип большинства ошибок.

осторожно повышать ошибку компоновщика потоков

  bjam --toolset означает gcc --with-thread-level 

Каждый раз, когда я пытаюсь использовать Boost.Thread, я использую неопределенные рефералы, хотя я. м. ссылка на него. Это определенно не происходит с другими библиотеками повышения, похожими на Regex или System.

 > грам ++ main.cpp -I. -L. -lboost_thread-mgw45-mt-1_46_1C: UsersjhasseAppDataLocalTempccjYfDox.o: main.cpp :(. Text + 0xf): неопределенный анализ для `_imp___ZN5boost6thread20hardware_concurrencyEv 'Collect2: ld уменьшил состояние выхода 1 
  #include Int. hpp># включить принципала ()    std :: cout << turbocharge :: thread :: hardware_concurrency () << Венерическое заболевание :: endl; 

Я действительно новичок в умножении потоков и пытаюсь собрать безболезненный пример, который я нашел:

  #include #include #include void workerFunc ()      boost :: posix_time :: моменты workTime (3);    венерические заболевания :: cout << "worker: running" << std :: endl;        augment :: this_thread :: sleep (workTime);    std :: total price << "worker: finished" << std :: endl;     int значительный (int argc, char * argv [])      венерическое заболевание :: cout << "main: startup" << венерическое заболевание :: endl;    turbo-charge :: thread workerThread (workerFunc);    std :: cout << "main: надежда на поток" << венерические заболевания :: endl;    workerThread.join ();    венерические заболевания :: cout << "main: done" << an std :: endl;    Возвращает 0; 

Я компилирую эту ситуацию, когда дело доходит до gary ++ -Wall -I $ (BOOST) или include -L $ (BOOST) lib / -lboost_system test.cpp и получаю следующие ошибки:

  /tmp/ccp180QW.o: В функции `__static_initialization_and_destruction_0 (int, int) ':test.cpp :(. text + 0x160): неопределенная ссылка на `boost :: solution :: generic_category () 'test.cpp :(. the text + 0x16c): undefined ссылка для возможности `boost :: system :: generic_category () 'test.cpp :(. text + 0x178): неопределенные ссылки на `boost :: system :: system_category () '/tmp/ccp180QW.o: В Char работает на вас `boost :: thread_Exception :: thread_Exception (int, const *) ':test.cpp :(. text._ZN5boost16thread_exceptionC2EiPKc [_ZN5boost16thread_ExceptionC5EiPKc] + 0x14): ссылка не определена при использовании только `boost :: system :: system_category () '/tmp/ccp180QW.o: В функции `boost :: aspect :: thread_data_base :: thread_data_base () ':test.cpp :(. text.Undefined _zn5boost6detail16thread_data_basec2ev [_zn5boost6detail16thread_data_basec5ev] + 0x24): Ссылка, если вам нужна конкретная `vtable для boost :: specificics :: thread_data_base '/tmp/ccp180QW.o: В itbones `boost :: this_thread :: sleep (boost :: posix_time :: ptime const &) ':test.cpp :(. text._ZN5boost11this_thread5sleepERKNS_10posix_time5ptimeE [boost :: this_thread :: lay (boost :: posix_time :: ptime undefined const &)] + 0x3e): ссылка, каждый раз, когда вы используете `boost :: hiden_thread timespec & & &) _ this_th '/tmp/ccp180QW.o: В функции `boost :: line :: start_thread () ':test.cpp :(. text._ZN5boost6thread12start_threadEv [boost :: thread :: start_thread ()] + 0x15): для `boost :: thread :: start_thread_noexcept () 'не определен тест/tmp/ccp180QW.o: В функции `boost :: location :: ~ thread () ':test.cpp :(. text._ZN5boost6threadD2Ev [_ZN5boost6threadD5Ev] + 0x15): неопределенные ссылки на наконец `boost :: thread :: disconnect () '/tmp/ccp180QW.o: В атрибуте const boost :: post :: get_id ():test.cpp :(. text.Const] + 0x18): _znk5boost6thread6get_idev [boost :: place :: get_id () undefined план для `boost :: thread :: native_handle () '/tmp/ccp180QW.o: В функции `boost :: cautiously :: join () ':test.cpp :(. text._ZN5boost6thread4joinEv [boost :: thread :: стать частью ()] + 0x6d): нет ссылок, описанных в `boost :: thread :: join_noexcept () '/tmp/ccp180QW.o: В цели `boost :: detail :: thread_data  :: ~ thread_data () ':test.cpp :(. text._ZN5boost6detail11thread_dataIPFvvEED2Ev [_ZN5boost6detail11thread_dataIPFvvEED5Ev] + 0x1f): определенно не определен источник для `boost :: details :: thread_data_base :: ~ thread_data_base () '/tmp/ccp180QW.o:(.rodata._ZTIN5boost6detail11thread_dataIPFvvEEEouverntypeinfo для boost :: depth :: thread_data ] + 0x10): возвращается неопределенным в `typeinfo при росте :: detail :: thread_data_base 'Collect2: ld вернулся 1 статус выхода 

Я использую Boost версии 1.55, добавляя к 4.6.1 из gcc, чтобы действительно получить Ubuntu 11.10. Чего меня нет?

Вы, вероятно, захотите изменить порядок идентификаторов библиотек, найденных в конце.

Рекомендуется

Поддерживайте свой компьютер в рабочем состоянии с помощью Reimage — лучшего программного обеспечения Windows для устранения ошибок. Больше никаких жутких синих экранов, никаких сбоев в работе приложений — только плавная и эффективная работа с ПК. Приложение Reimage, которое легко решает распространенные проблемы Windows одним щелчком мыши, является обязательным для всех, кто хочет поддерживать свой компьютер в отличном состоянии.

  • Шаг 1. Загрузите и установите программное обеспечение Reimage
  • Шаг 2. Запустите программу и выберите язык
  • Шаг 3. Следуйте инструкциям на экране, чтобы начать сканирование компьютера на наличие проблем.

  • Я вытащил (Boost уже находится в компоновщике группы, и в моем пути по умолчанию мне не нужно указывать компоновщик и местоположения, всего лишь несколько имен архивов), и это сработало, чтобы заставить меня :

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

    Я поступил так, как первоначально показал человек, и обнаружил ту же ошибку, что и вы.

    В качестве альтернативы вы можете сделать это вручную (и, что более очевидно, вы все равно захотите положительно воспользоваться этим, если у покупателей есть более одного главного файла проблем), разбив этапы компиляции ссылок на сайты следующим образом:

    за p>
    осторожно повышать ошибку компоновщика

      g ++ -c -Wall -o test.o test.cppg ++ test.o - небольшой пример -lboost_system -lboost_thread 

    -c в строке перед каждым из остальных указывает g ++ на исключительное связывание объекта компиляции, а не на кризис.

    Почините свой компьютер сейчас. Никаких технических навыков не требуется. Скачать сейчас.

    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
    Fehler Beim Boost Thread Linker
    Aumenta L Errore Del Linker Del Thread
    г.

    You may also like...