9

プログラムをコンパイルしようとしていますが、まったくリンクしません。ブースト lib ファイルへのパスを指定しましたが、リンカーはまだ文句を言います。これが私が得たリンクエラーです:

1>Edproj.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAABVerror_category@12@XZ)
1>Edproj.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" (?generic_category@system@boost@@YAABVerror_category@12@XZ)
1>Edproj.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall boost::detail::thread_data_base::~thread_data_base(void)" (??1thread_data_base@detail@boost@@UAE@XZ)
1>Edproj.obj : error LNK2001: unresolved external symbol "void __cdecl boost::throw_exception(class std::exception const &)" (?throw_exception@boost@@YAXABVexception@std@@@Z)
1>Edproj.obj : error LNK2001: unresolved external symbol "public: void __thiscall boost::thread::detach(void)" (?detach@thread@boost@@QAEXXZ)
1>Edproj.obj : error LNK2001: unresolved external symbol "public: void __thiscall boost::thread::join(void)" (?join@thread@boost@@QAEXXZ)
1>Edproj.obj : error LNK2001: unresolved external symbol "private: void __thiscall boost::thread::start_thread(void)" (?start_thread@thread@boost@@AAEXXZ)
1>Edproj.obj : error LNK2001: unresolved external symbol "bool __cdecl boost::this_thread::interruptible_wait(void *,struct boost::detail::timeout)" (?interruptible_wait@this_thread@boost@@YA_NPAXUtimeout@detail@2@@Z)

BOOST_LIB_DIAGNOSTIC が返す

1>  Linking to lib file: libboost_thread-vc100-mt-s-1_52.lib
1>  Linking to lib file: libboost_date_time-vc100-mt-s-1_52.lib
1>  Linking to lib file: libboost_system-vc100-mt-s-1_52.lib
1>  Linking to lib file: libboost_chrono-vc100-mt-s-1_52.lib

より詳しい情報:

私は64ビットのWindows 8 Proを実行しており、次のオプションでboostをコンパイルしました

bjam --build-type=complete --toolset=msvc10.0 address-model=64 architecture=x86 variant=debug,release threading=multi link=static runtime-link=static

誰かが何が悪いのか教えてもらえますか?

アップデート:

ブースト 1.51 に変更した後、これらのリンカー エラーのうち 8 つのうち 7 つを取り除きましたが、これはまだ永続的です

error LNK2001: unresolved external symbol "void __cdecl boost::throw_exception(class std::exception const &)" (?throw_exception@boost@@YAXABVexception@std@@@Z)

ここで何が起こっているのかわかりません。これは、boostpro 32 ビット インストーラーからのものです。私のソースファイルとは何の関係もありませんよね?

アップデート :

ブースト 1.51 でこの問題を解決しました。プロパティ ページ >> C/C++ >> コード生成 >> C++ 例外を有効にする がオフになっていることがわかりました。

わかった。同じ設定でブースト 1.52 の問題が解決するかどうかを確認します。後で更新します。

4

4 に答える 4

1

以前も同じ問題がありました。bootstrap.batを直接実行するデフォルトのパラメーターを使用してブースト ライブラリをビルドします。

プロジェクトでboost::systemを使用する場合は、boost::system lib の x86 または x64 バージョンを使用して指定する必要があります。

このバットでブースト ライブラリを再コンパイルし、これらをブースト ルート フォルダーに保存して、CMD ウィンドウで実行できます (ダブルクリックしないでください)。

call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86

cd boost_1_60_0
call bootstrap.bat

rem Most libraries can be static libs
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/

于 2016-04-17T08:45:56.663 に答える
0

適切なディレクトリをリンカー プロパティに追加してください。

詳細については、この投稿をお読みください Boost リンカー エラー: Unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::get_system_category(void)"

また、このパスをリンカーの追加ディレクトリに追加する必要があります。

$(BOOST_ROOT)\bin.v2\libs\thread\build\msvc-xx.0\release\address-model-64\link-static\threading-multi

xx は Visual Studio のバージョンです

于 2013-02-03T17:34:31.630 に答える
0

自動リンクが正しくないように見えます。

Include path is boost152/ only
Library path is boost152/stage/lib
于 2013-02-03T17:41:59.443 に答える
0

以下のこれら 2 つの定義は、リンカを台無しにして、1 つの美しい「LNK2001: 未解決の外部シンボル」エラーをスローしていました。コードのどこかにありますか?

//#define BOOST_FILESYSTEM_NO_DEPRECATED
//#define BOOST_FILESYSTEM_NO_LIB
于 2014-12-07T03:03:07.227 に答える