3

私は VS 2010 で DLL プロジェクトに取り組んでいます。コードの一部でブースト ミューテックスを使用したいと考えています。しかし、プロジェクトをコンパイルして最終的な DLL をリリースすると、次のリンケージ エラーが発生します。

LINK : fatal error LNK1104: cannot open file 'libboost_date_time-vc100-mt-1_49.lib'

私はすでにこのコマンドでブーストをコンパイルしました:

bjam install --toolset=msvc variant=release link=static threading=multi runtime-link=static

& という名前のファイルがありますlibboost_date_time-vc100-mt-s-1_49.lib。プロジェクトの構成タイプをダイナミック リンク ライブラリ (DLL) からスタティック ライブラリに変更すると、プロジェクトは正常にビルドされますが、DLL ファイルとしてのみリリースする必要があります (& 私の最終的な DLL には他の外部 DLL への依存関係)。boost のコンパイルによる問題の原因はわかっていますが、どのように再コンパイルすればよいかわかりません
。ガイドラインはありますか?

4

3 に答える 3

3

ランタイム ライブラリを静的にリンクしていることを確認します ([構成プロパティ] --> [C/C++] --> [コード生成] --> [ランタイム ライブラリ: マルチスレッド (/MT)])。

それ以外の場合は、CRT とブーストを動的にリンクします。この目的のために、次のようにブーストを構築します。

bjam --toolset=msvc variant=release link=shared threading=multi runtime-link=shared
于 2013-03-12T13:38:51.720 に答える
1

IMO、ブーストライブラリをうまく構築しました:link=static静的ライブラリ(DLLではなく)を発行したいという意味で使用し、スタンドアロン展開をしたいので、runtime-link=staticMS C / C ++ランタイムに対してリンクするという意味を指定しました静的ライブラリ (たとえば、printf() のコードは最終的なライブラリに埋め込まれ、msvcr100.dll には参照されません)

下の図を見てください。Boost ライブラリが置かれているディレクトリのフル パスを [ Additional Library Dependencies ] の下に設定してください。

ここに画像の説明を入力

于 2013-03-12T11:20:30.240 に答える