我正在使用boost的线程库,并且在Visual中遇到了链接问题。
现在,我正在用/MT编译VS项目。我所链接的库名为libboost_thread-vc100-mt-1_48.lib,,它似乎表明它也是使用/MT编译的。
但是,如果我关闭链接器设置中的所有/MD相关库(属性-> linker -> Input ->忽略特定的默认库).
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::线程应该只针对/MT中的库(应该是LIBCMT.LIB、LIBCPMT.LIB)进行链接。我编译的boost不正确吗?
发布于 2012-01-27 22:40:42
哈哈!林克被打败了!
看来我的预感是对的。我没有正确编译boost。要用boost构建来模拟/MT,您需要针对静态运行时库进行链接(链接到动态运行时库似乎是默认的)。
执行此操作的命令(用于发布boost::线程的版本构建)是:
.\b2 --with-thread variant=release link=static threading=multi runtime-link=static希望这能帮助那些在他们的项目中打开/MT的人使用boost!
https://stackoverflow.com/questions/9040844
复制相似问题