2012-01-27 93 views
0

我正在使用boost的线程库,并在Visual Studio中遇到链接问题。Visual Studio Boost线程/ MT链接问题

现在,我正在用/ MT编译我的VS项目。我链接的库叫做libboost_thread-vc100-mt-1_48.lib,这似乎表明它也是用/ MT编译的。

不过,如果我关闭了所有/ MD相关的库在我的连接设置(属性 - >链接器 - >输入 - >忽略特定的默认库)...

msvcrt.lib 
msvcrtd.lib 
msvcprt.lib 
msvcprtd.lib 

然后我得到的链接错误!

libboost_thread-vc100-mt-1_48.lib(thread.obj) : error LNK2001: unresolved external symbol __imp___gmtime64 
libboost_thread-vc100-mt-1_48.lib(thread.obj) : error LNK2001: unresolved external symbol __imp___beginthreadex 

仅仅通过关闭/ MD相关库,这怎么可能? boost :: thread只能链接到/ MT中的库(应该是LIBCMT.LIB,LIBCPMT.LIB)。我错误地编译了boost吗?

回答

1

BAM!连接器击败!

看起来我的预感是对的。我没有正确编译boost。要使用boost构建模拟/ MT,您需要链接静态运行时库(链接到动态运行时库似乎是默认值)。

的命令来做到这一点(升压的发布版本::线程)是:

.\b2 --with-thread variant=release link=static threading=multi runtime-link=static 

希望这有助于有人在那里使用升压与/ MT在他们的项目开启!