これが機能しないようです。 Boost
ライブラリを必要とする単純なコンソールアプリケーション(websocket++
ライブラリに依存)を作成しましたが、コンパイルしようとすると次のようになります。
致命的なエラーLNK1104:ファイル 'libboost_system-vc110-mt-Gd-1_51.lib'を開けません
ただし、(boost_root)/stage/libs
にlibを作成するbjamを実行し、libsへのパスをコンパイラC++/Additionnals includes
にリンクしました。
(boost_root)/stage/libs
を見ると、ファイルlibboost_system-vc110-mt-Gd-1_51.lib
はありません。代わりにlibboost_system-vc110-mt-sgd-1_51.lib
と呼ばれます。
何か案が?
C++→General→Additional Include Directoriesパラメータは、コンパイラがヘッダーファイルを検索するディレクトリをリストするためのものです。
リンクするライブラリを探す場所をリンカーに指示する必要があります。この設定にアクセスするには、Solution Explorerウィンドウでプロジェクト名を右クリックしてから、Properties→Linker→一般→追加のライブラリディレクトリ。ここに<boost_path>\stage\lib
と入力します(これは、 build Boost をデフォルトオプションを使用する場合にライブラリが配置されるパスです)。
これは、自分でC++を勉強している私のようなアマチュアにとって最も簡単な方法です。
まず、boostライブラリを任意のディレクトリに解凍します。 c:\directory
をお勧めします。
c:\boost_1_57_0
。次に、問題が発生した場合はリンクライブラリに移動します。
c:\boost_1_57_0
でした。booststrap.bat
をクリックします(コマンドウィンドウに入力するのを気にせずに、解決するのに2週間かかった問題があった場所であるウィンドウを閉じないでください。しばらくするとbooststrap
は実行され、同じファイルを生成しますが、現在は2つの異なる名前:b2
とbjam
を使用しています。b2
をクリックして、実行を待ちます。bjam
をクリックして、実行を待ちます。次に、stage
というフォルダーが生成されます。c:\boost_1_57_0\stage\lib
。そして、あなたは行ってもいいです!
同じ問題がありました。原因は、Visual C++ 2010(v100)でBoostをコンパイルし、誤ってVisual Studio 2012(v110)でライブラリを使用しようとしたためです。
そこで、構成を(Visual Studio 2012で)プロジェクトプロパティ-> 一般-> Plataform Toolsetに変更し、値を- Visual Studio 2012(v110) to Visual Studio 2010(v100).
さらに別のソリューション:
私はLink-> Additional Dependenciesプロパティにboost_regex-vc120-mt-Gd-1_58.libを含めていたので困惑しましたが、リンクはlibboost_regex-vc120-mt-Gd-1_58.libを開くことができないと私に言い続けました( libプレフィックスに注意してください)。 libboost_regex-vc120-mt-Gd-1_58.libを指定しませんでした。
ブーストダイナミックライブラリ(.dll)を使用しようとしました(そしてビルドしていました)が、BOOST_ALL_DYN_LINKマクロが定義されていませんでした。どうやら、ライブラリを含めるためのコンパイルのヒントがあり、BOOST_ALL_DYN_LINKがないと、動的ライブラリ(libプレフィックスなし)ではなく、静的ライブラリ(libプレフィックス付き)を探します。
私は同じ問題を抱えていましたが、私の間違いは、v110ではなくバージョンv100(プロジェクトプロパティ-> ConfiguratioProperties-> General-> platformTooset)を持つvisual c ++ 2010で使用するバイナリboost_1_55_0-msvc-11.0-32.exeをインストールしたことでしたVisual C++ 2012として。したがって、boost_1_55_0-msvc-10.0-32.exeをダウンロードしましたが、今のところすべてが問題ありません。
ブーストの構築に問題がある場合、またはブーストを行わない場合は、代わりに SourceForge からlibファイルをダウンロードします。リンクをクリックすると、バージョン1.51の圧縮されたlibおよびdllファイルのフォルダーが表示されます。ただし、リンクを編集して、選択するバージョンを指定できる必要があります。 BoostProのインストーラーにはいくつかの問題があるようです。
ブーストユニットテストを使用しようとすると同様の問題が発生しましたVisual Studio 2015(Community Edition):
致命的なエラーLNK1104:libboost_unit_test_framework-vc140-mt-1_57
だから私は自分の解決策を共有すると思った。
ブーストユニットテストプロジェクトは、次の2つの方法で作成できます(このソリューションは両方で機能します)。
両方のプロジェクトを機能させるために私が従った手順は次のとおりです。
まず、目的のブーストバージョンをダウンロードします(たとえば、 boost_1_57_ )。正しいバイナリ(msvc v140を使用してコンパイル)でブーストをダウンロードするか、コマンドラインから次のコマンドを実行して自分でバイナリを抽出できます。
msvc-14.0は、Visual Studio 2015バージョン(VS 2015 = v14.0 = v140)が必要であることを指定し、address-model = 32は、プラットフォーム32が必要であることを指定します(ただし、64ビットでも同じことができます)。
バイナリを入手したら、Visual Studioに移動して、作成したBoost Unit Testingプロジェクトを選択します。 プロジェクトプロパティ>構成(メインメニューから)に移動し、次の選択を行います。
「General> Platform Toolset」をVisual Studio 2015(v140)に設定します。
ブーストフォルダーへのパス(例:C:\ boost_1_57_0)とバイナリファイルを含むサブフォルダーへのパス(例:C:\ boost_1_57_0\stage\lib)
b2 -j%cores%toolset =%msvcver%address-model = 64 architecture = x86 link = static threading = multi runtime-link = shared --build-type = minimal stage --stagedir = stage/x64
プロパティ→リンカー→一般→追加のライブラリディレクトリ$(BOOST)\ stage \x64\ lib
ここで同じ問題が報告されました。 mainTest.cppをサブフォルダーsrc/mainTest /からメインフォルダーsrc /に移動する問題を解決しました。これもあなたの問題だったと思います。
2>LINK : fatal error LNK1104: cannot open file 'libboost_regex-vc120-mt-sgd-1_55.lib
私の場合、古い継承プロジェクトではbootstrap/bjamは利用できませんでした(ライブラリはプリコンパイルされ、SCMにコミットされました)。ライブラリには、ファイル名にVCまたはBOOSTバージョン管理がありません。例:libboost_regex-mt-sgd.lib
、ただしProcessed /DEFAULTLIB:libboost_regex-vc120-mt-sgd-1_55.lib
は何らかの形で自動的にトリガーされました。
バージョン管理されていないファイル名を手動で追加することにより修正:
<AdditionalDependencies>$(DK_BOOST)\lib64\libboost_regex-mt-sgd.lib</AdditionalDependencies>
...vc120-mt-sgd-1_55.lib
をブラックリストに追加
<IgnoreSpecificDefaultLibraries>libboost_regex-vc120-mt-sgd-1_55.lib</IgnoreSpecificDefaultLibraries>