g ++包括boost库

Ger*_*ári 6 c++ boost g++ static-linking

我使用bjam构建了我的boost库,然后将所有.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
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我解决这个问题的问题吗?

我遵循了这个教程: http ://antonym.org/2009/05/threading-with-boost---part-i-creating-threads.html

所以这是来源:http://pastebin.com/YqCPLNwU

更新:

我认为错误不在于库,错误在库中.我用bjam和toolchain=gcc multithread选项构建它.

UPDATE

这是objdump http://pastebin.com/4fpqYb7d

UPDATE

我发现问题是链接器想要链接动态链接或类似的东西.

代码块,MinGW,Boost和静态链接问题

那里"杰克凯利"说我需要#define BOOST_THREAD_USE_LIB在我的源文件的开头添加.但这对我没有帮助.我如何静态链接库?(-static没有帮助)

Jan*_*zak 5

#define BOOST_THREAD_USE_LIB 在开始时添加 工作.

请记住链接也提升错误中列出的库(在我的情况下为boost系统).


Tho*_*son 2

将 -lboost_thread-mgw45-mt-1_46 选项移至命令行末尾(在 try1.cpp 之后)。(来自聊天。