G ++, включая библиотеку наддува - PullRequest
6 голосов
/ 13 марта 2011

я собрал свою библиотеку наддува с помощью bjam, а затем переместил все файлы .a в c:\Server\libs\boost_1_46_0\lib

, если я хочу скомпилировать свою программу, возникает ошибка:

команда компиляции

g++ -Ic:\Server\libs\boost_1_46_0\ -Lc:\Server\libs\boost_1_46_0\lib\ -lboost_thread-mgw45-mt-1_46 -o try1 try1.cpp

ошибки

C:\Users\FEHERG~1\AppData\Local\Temp\ccB46To7.o:try1.cpp:(.text+0xe9): undefined
 reference to `_imp___ZN5boost6thread4joinEv'
C:\Users\FEHERG~1\AppData\Local\Temp\ccB46To7.o:try1.cpp:(.text+0x120): undefine
d reference to `_imp___ZN5boost6threadD1Ev'
C:\Users\FEHERG~1\AppData\Local\Temp\ccB46To7.o:try1.cpp:(.text+0x138): undefine
d reference to `_imp___ZN5boost6threadD1Ev'
C:\Users\FEHERG~1\AppData\Local\Temp\ccB46To7.o:try1.cpp:(.text$_ZN5boost11this_
thread18interruptible_waitEm[boost::this_thread::interruptible_wait(unsigned lon
g)]+0x40): undefined reference to `_imp___ZN5boost11this_thread18interruptible_w
aitEPvNS_6detail7timeoutE'
C:\Users\FEHERG~1\AppData\Local\Temp\ccB46To7.o:try1.cpp:(.text$_ZN5boost6thread
C1IPFvvEEET_NS_10disable_ifINS_14is_convertibleIRS4_NS_6detail13thread_move_tIS4
_EEEEPNS0_5dummyEE4typeE[boost::thread::thread<void (*)()>(void (*)(), boost::di
sable_if<boost::is_convertible<void (*&)(), boost::detail::thread_move_t<void (*
)()> >, boost::thread::dummy*>::type)]+0x23): undefined reference to `_imp___ZN5
boost6thread12start_threadEv'
collect2: ld returned 1 exit status

Кто-нибудь может мне помочь, в чем проблема в этой проблеме?

Я следовал этому уроку: http://antonym.org/2009/05/threading-with-boost---part-i-creating-threads.html

, так что это источник: http://pastebin.com/YqCPLNwU

ОБНОВЛЕНИЕ:

Я думаю, что ошибка не выстилает библиотеку, ошибка в библиотеке.я построил его с bjam с toolchain=gcc multithread опциями.

ОБНОВЛЕНИЕ

вот objdump http://pastebin.com/4fpqYb7d

ОБНОВЛЕНИЕ

Я обнаружил, что проблема в том, что компоновщик хочет связать с динамическим связыванием или что-то вроде этого.

Проблемы с блоками кода, MinGW, Boost и статическим связыванием

там "Джек Келли" говорит, что мне нужно добавить #define BOOST_THREAD_USE_LIB в начале моего исходного файла.но это не помогает мне.как я могу связать библиотеку статически?(-static тоже не помогло)

Ответы [ 3 ]

5 голосов
/ 10 июля 2012

добавление #define BOOST_THREAD_USE_LIB в начале работы.

Не забудьте также связать Boob-библиотеки, перечисленные в ошибках (система повышения в моем случае).

2 голосов
/ 14 марта 2011

Переместите параметр -lboost_thread-mgw45-mt-1_46 в конец командной строки (после try1.cpp). ( Из чата. )

1 голос
/ 13 марта 2011

Это может быть актуально https://svn.boost.org/trac/boost/ticket/4614

...