2012-01-27 3 views
0

私はブーストのスレッドライブラリを使用しており、Visual Studioでリンクの問題が発生しています。Visual Studioブーストスレッド/ MTリンクの問題

今、私はVSプロジェクトを/ MTでコンパイルしています。私がリンクしているライブラリは、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であるはずです)のlibsに対してのみリンクする必要があります。私は不正にコンパイルをコンパイルしましたか?

答えて

1

BAM!リンカは敗北した!

私の勘違いが正しいように見えます。私は正しくブーストをコンパイルしなかった。 boostビルドで/ MTをエミュレートするには、静的なランタイムライブラリとリンクする必要があります(動的ランタイムライブラリへのリンクがデフォルトのようです)。

(ブーストのリリースビルドで::スレッドを)これを行うには、コマンドました:

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

希望これは/ MTがそのプロジェクトに投入して、ブーストを使用して、誰かがそこに役立ちます!