さまざまなことに利用するコードをテストしようとしていますboost::filesystem
。
vc11 用のブースト 1.51 の静的バージョンをビルドしたところ、意図したライブラリが期待どおりに出力されました。
使用したフラグは次のとおりです。
b2 --with-filesystem --build-type=complete --build-dir=.\build link=static runtime-link=static
そして、生成されたファイルのリストは次のとおりです。
libboost_filesystem-vc110-mt-s-1_51.lib
libboost_filesystem-vc110-mt-sgd-1_51.lib
libboost_filesystem-vc110-s-1_51.lib
libboost_filesystem-vc110-sgd-1_51.lib
libboost_system-vc110-mt-s-1_51.lib
libboost_system-vc110-mt-sgd-1_51.lib
libboost_system-vc110-s-1_51.lib
libboost_system-vc110-sgd-1_51.lib
次に、新しいWin32 DLLプロジェクトを作成し、適切な include/lib ディレクトリを追加しました。
しかし、コンパイルしようとすると、次の出力が得られます。
LNK1104: cannot open file 'libboost_filesystem-vc110-mt-gd-1_51.lib
しかし、このファイルは存在しません。これは、ライブラリの静的バージョンではないためです...
プロジェクトのどこにもDLLバージョンへのリンクを要求したことがないため、これは奇妙です!
では、なぜ私のプロジェクトは、私が使用するように頼んだことのないライブラリについて不平を言っているのでしょうか?
ブースト ヘッダーは、対応するライブラリに対して自動的にリンクしようとしますか?
の静的なシングル スレッド バージョンを使用することをブーストに伝えるために設定する必要がある、ある種のプリプロセッサ フラグはありboost::filesystem
ますか?
アップデート:
コメントで、ブーストは実際にそれをサポートするコンパイラの自動リンクを試みていることを通知されました<boost/config/auto_link.hpp>
...ブーストの静的(デバッグ)および(リリース)バージョン
を使用するようにこれらのヘッダーを適切に構成するためのいくつかの試みの後、まだこのエラーが発生しています。したがって、この機能を適切に構成または無効にする
方法を誰かが教えてくれたら、それを回答としてマークします。また、適切なライブラリであると
仮定するのは正しいですか?/MDd
/MD
libboost_filesystem-vc110-s-1_51.lib
libboost_filesystem-vc110-sgd-1_51.lib
/MD
/MDd
ありがとう!