Увеличить неопределенную ссылку во время компиляции - PullRequest
0 голосов
/ 21 ноября 2011

Я получаю ошибку компиляции при попытке скомпилировать простую программу-тестер из документации.

C:\DOCUME~1\A\LOCALS~1\Temp\ccRsXzHu.o:tester.cpp:(.text+0xa6): undefined reference to     `_imp___ZN5boost6thread4joinEv'
C:\DOCUME~1\A\LOCALS~1\Temp\ccRsXzHu.o:tester.cpp:(.text+0xb4): undefined reference to     `_imp___ZN5boost6threadD1Ev'
C:\DOCUME~1\A\LOCALS~1\Temp\ccRsXzHu.o:tester.cpp:(.text+0xcf): undefined reference to     `_imp___ZN5boost6threadD1Ev'
C:\DOCUME~1\A\LOCALS~1\Temp\ccRsXzHu.o:tester.cpp:    (.text$_ZN5boost11this_thread18interruptible_waitEy[boost::this_thread::interruptible_wait(    unsigned long long)]+0x4a): undefined reference to     `_imp___ZN5boost11this_thread18interruptible_waitEPvNS_6detail7timeoutE'
C:\DOCUME~1\A\LOCALS~1\Temp\ccRsXzHu.o:tester.cpp:     (.text$_ZN5boost6threadC1IPFvvEEET_NS_10disable_ifINS_14is_convertibleIRS4_NS_6detail13thre    ad_move_tIS4_EEEEPNS0_5dummyEE4typeE[boost::thread::thread<void (*)()>(void (*)(),     boost::disable_if<boost::is_convertible<void (*&)(), boost::detail::thread_move_t<void (*)()> >, boost::thread::dummy*>::type)]+0x23): undefined reference to     `_imp___ZN5boost6thread12start_threadEv'
collect2: ld returned 1 exit status

Я использую mingw 4.5 и g ++ 4.5.2 для Windows.Boost версия v1.4.8.

Я надеюсь, что кто-то может помочь мне решить эту проблему.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 21 ноября 2011

Похоже, вы не ссылаетесь на библиотеки наддува.

Boost не поставляется с окнами, поскольку не является стандартной библиотекой. Вы должны загрузить заголовки и библиотеки, затем включить заголовки в свой проект и ссылаться на библиотеки во время компиляции. Поскольку вы используете g ++, это означает добавление строки -l к вашей команде компиляции. Строка -l должна использоваться также с каждой конкретной библиотекой, которую вы хотите использовать, вы не можете просто указать каталог boost.

Эта страница поможет вам начать работу в Windows, а эта страница поможет вам начать работу на * платформах nix.

После того как вы скомпилировали boost, в вашем примере вы должны скомпилировать вашу программу с

g++ -o tester.exe -Lpath/to/boost/libraries/ -lboost_thread tester.c
0 голосов
/ 21 марта 2013

Убедитесь, что все ваши библиотеки связаны правильно.

Попробуйте поставить эту строку первой, если ваша библиотека потоков статически определена

#define BOOST_THREAD_USE_LIB

Также проверьте эту тему .

...