Visual Studio增强线程/ MT链接问题

时间:2012-01-27 22:22:06

标签: visual-studio boost linker boost-thread mt

我正在使用boost的线程库并且已经遇到了Visual Studio中的链接问题。

现在,我正在使用/ 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中的lib(应该是LIBCMT.LIB,LIBCPMT.LIB)。我编译推文不正确吗?

1 个答案:

答案 0 :(得分:2)

BAM!联系人失败了!

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

执行此操作的命令(对于boost :: thread的发布版本)是:

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

希望这可以帮助那些在他们的项目中使用/ on MT启用的人!