2012-01-27 124 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在他們的項目開啓!