私は初めてBoostを使い始めました、詳細:
コードがコンパイルされ、プロジェクトが(x64ライブラリをビルドした後)ブーストライブラリに向けられ、単純な問題が発生しましたが、リンカーエラーが発生しています。
2>BaseWebServer.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::get_system_category(void)" (?get_system_category@system@boost@@YAAEBVerror_category@12@XZ)
2>BaseWebServer.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::get_generic_category(void)" (?get_generic_category@system@boost@@YAAEBVerror_category@12@XZ)
何か案は?
私はこの定義を追加しました:#define BOOST_LIB_DIAGNOSTIC
そして今私の出力ではこれを見る:
1>Linking to lib file: libboost_system-vc90-mt-1_38.lib
1>Linking to lib file: libboost_date_time-vc90-mt-1_38.lib
1>Linking to lib file: libboost_regex-vc90-mt-1_38.lib
これは、システムlib内のリンクが完全であることを示しているようです。
私は問題を解決しました。 64ビットライブラリをビルドするつもりだったときに、32ビットライブラリをビルドしていました。私は自分のビルドステートメントを修正し、64ビットライブラリをビルドしました。
ここに私のbjamコマンドラインがあります:
C:\Program Files (x86)\boost\boost_1_38>bjam --build-dir=c:\boost --build-type=complete --toolset=msvc-9.0 address-model=64 architecture=x86 --with-system
#include <boost/system/config.hpp>
私の場合、BOOST_LIB_DIAGNOSTICはシステムが自動的にリンクされていることを示しませんでした。単にboost/system/config.hppを含めることでこれを解決しました。
Boost_systemライブラリにリンクする必要があります
私も同じ問題を抱えていました。上記のすべてを試しましたが、何の助けにもなりません。解決策は簡単でした:最初に空のプロジェクトで作業しましたが、そこでリンカーエラーLNK2019が発生しました。しかし、stdafx.h、targetver.h、およびstdafx.cppファイルを使用して新しいデフォルトのWin32コンソールアプリケーションを作成すると、すべてが機能しました。誰かに役立つかもしれませんが、私はこれに2日を費やしています
プロジェクトでboost :: systemを使用する場合は、x86またはx64バージョンのboost :: system libを使用して指定する必要があります。
次のバッチファイルを使用して、Boostライブラリを再コンパイルできます。これらをBoostルートフォルダーに保存し、CMDウィンドウで実行します(ダブルクリックしないでください)。
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86
cd boost_1_60_0
call bootstrap.bat
rem Most libraries can be static libraries
b2 -j8 toolset=msvc-14.0 address-model=64 architecture=x86 link=static threading=multi runtime-link=shared --build-type=minimal stage --stagedir=stage/x64
b2 -j8 toolset=msvc-14.0 address-model=32 architecture=x86 link=static threading=multi runtime-link=shared --build-type=minimal stage --stagedir=stage/win32
pause
詳細については、次の記事をご覧ください。 https://studiofreya.com/2015/12/19/how-to-build-boost-1-60-with-visual-studio-2015/ =
私はこのリンカーエラーとCMakeのためにここから来ましたが、私の場合、デフォルトでCMakeがデフォルトで32ビットでビルドしようとするのは事実でした。これは-Ax64
を指定することで修正されました
cmake -Ax64 {path to CMakeLists.txt}
私はリンカーエラーとCMAKEを検索して質問に来たので、他の誰かがこの質問を同じ方法で見つけた場合に備えて、このコメントをここに追加します。
私の場合のリンカエラーは誤ったことが原因であることがわかりました:
add_definitions(-DBOOST_ALL_DYN_LINK)
の中に CMakeLists.txt
、これはUnixでは問題ありませんが、私の場合はWindowsでは問題ありません。ソリューションは、Windowsで定義されているものを使用していません。
両方のバージョンが必要で、stageターゲットを使用したため、x86バージョンには--stagedir =。/ stageX86を、x64にはデフォルトの./stageを使用しました