4

を使用するプロジェクトを作成し、ディレクトリをに<boost/thread/locks.hpp>追加し、フォルダをリンカーに追加しました。しかし、ソリューションをビルドしようとすると、エラー:includeAdditional Include directorieslib

エラー 1 エラー LNK1104: ファイル 'libboost_thread-vc100-mt-sgd-1_50.lib' を開けません

このファイルを lib ディレクトリで検索しましたが、この名前のファイルは lib ディレクトリにありませんでした。似たような名前のファイルが見つかりまし libboost_thread-vc100-mt-gd-1_50た。

私が間違っているのは何ですか?

4

1 に答える 1

8

あなたの問題は、この質問の問題とかなり似ているようです。ここで説明する命名規則によると、リンカーが使用するライブラリとユーザーが使用するライブラリの唯一の違いは、前者が C++ 標準ライブラリとコンパイラ ランタイム サポート ライブラリに静的にリンクすることです。この問題を解決するには、次の 2 つの方法が考えられます。

  1. リンカーが必要と
    するライブラリを取得します。boostpro インストーラーを使用した場合:

    必ずチェックボックスをオンにしてくださいMultithreaded debug, static runtime(すべてにマークを付けることをお勧めします)

    b. 自分でライブラリを構築した場合:

    コンソール ウィンドウを開きます
    ディレクトリをブースト ルートに変更します
    次のコマンドは、必要なライブラリをビルドします:
    b2 toolset=msvc-10.0 --with-thread address-model=64 variant=debug link=static runtime-link=static runtime-debugging=on stage
    (使用をお勧めします:
    b2 toolset=msvc-10.0 address-model=64 --build-type=complete stage)

  2. リンカーが必要
    なライブラリを使用するようにします。自動リンクに共有ライブラリを使用させる

    BOOST_THREAD_DYN_LINK (スレッド ライブラリのみに影響する) または BOOST_ALL_DYN_LIB (すべてのブースト ライブラリに影響する) を定義してから、ヘッダー ファイルを含めることができます (または、できれば VC プロジェクトのプリプロセッサ設定で)。これにより、リンカはライブラリを使用しようとしますboost_thread-vc100-mt-gd-1_50.lib(lib- プレフィックスがないことに注意してください)。

    b. 自動リンクを無効にする

    BOOST_ALL_NO_LIB を定義してから、リンカー オプションにライブラリの正確な名前を追加できます。

于 2012-07-08T17:04:09.617 に答える