ブーストライブラリを1.61から1.63にアップデートすることにしました。新しいファイルを使用するように更新したプロジェクトで、 tは前に取得:私の1.63ライブラリは、Visual Studio 2017を使用してコンパイルされているのでLNK2001:私のブーストライブラリが(おそらく)正しくビルドされていません
error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" ([email protected]@[email protected]@[email protected]@XZ)
error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" ([email protected]@[email protected]@[email protected]@XZ)
、私の最初の仮定は、私はブーストライブラリをコンパイルミスを犯したので、ここで私から取っている総ステップできたということですブーストファイルのクリーンな解凍:
- スタートメニュー→Visual Studio 2017 RC→Developer Comman dプロンプト
- 高位ディレクトリ
boost_1_63_0
に入るまで、私はディレクトリを変更します。 - 私は私が
using msvc ;
私は(リストの後に以下に記載するコード)私は、このファイルへの編集を行う - を編集するための
boost/config/auto_link.hpp
を開く - を編集するための
project-config.jam
を開くbootstrap.bat
- を実行
- オープンコマンドプロンプトで、私はコマンドを実行します
b2 architecture=x86 address-model=64 link=static threading=multi runtime-link=shared --build-type=complete stage --stagedir=stage/x64 -a
- 最後に次のメッセージで完了します私のコードでこれらのライブラリを使用しようとしました。
#define BOOST_LIB_DIAGNOSTIC
を使用して、正しいファイルが使用されていることを追跡しています。 - 私はboost.asioを使用するプロジェクトをコンパイルしようとし、上記の2つの未解決の外部シンボルエラーを取得します。
using msvc : 14.1 : E:\Program Files\Microsoft Visual Studio\VC\Tools\MSVC\14.10.24911\bin\HostX64\x64\;
には変更
誰かが私の間違いを知っていますか? Visual Studio 2017 RCでVisual Studio 2015を使用してコンパイルしたブースト1.61ライブラリを使用すると、これらのエラーは発生しません。 (旧)
auto_link.hpp:
# elif defined (BOOST_MSVC)
// vc14:
# define BOOST_LIB_TOOLSET "vc140"
auto_link.hpp(新):ブーストコンパイルプロセスの最後に
# elif defined (BOOST_MSVC) && (BOOST_MSVC < 1910)
// vc14:
# define BOOST_LIB_TOOLSET "vc140"
# elif defined (BOOST_MSVC)
// vc15:
# define BOOST_LIB_TOOLSET "vc141"
メッセージ:
...failed updating 6 targets...
...skipped 4 targets...
...updated 904 targets...
ライブラリ#define BOOST_LIB_DIAGNOSTIC
:
1>Linking to lib file: libboost_system-vc141-mt-1_63.lib
1>Linking to lib file: libboost_date_time-vc141-mt-1_63.lib
1>Linking to lib file: libboost_regex-vc141-mt-1_63.lib
その他の診断情報が必要な場合は教えてください。私はboost.asioライブラリのさまざまな使用をコメントアウトしようとしましたが、ヘッダーを削除するだけでこれらの問題が完全に排除されました(もちろん、ブーストコンポーネントは使用できなくなりました)。
これはエラーと関係がありますが、 'msvc'ツールセットへのパスが奇妙に見えます:' Program Files'ではなく 'Programあなたが32ビットWindows上にいるように、しかし64ビットネイティブコンパイラ( 'HostX64')を要求しているかのように。また、 'Developer Command Prompt'ショートカットは' HostX86 \ x86'(32ビットコンパイラ構築の32ビットコード)に対応しています。 64ビットコンパイラで64ビットコードをビルドするには、 'x64ネイティブツールのコマンドプロンプト'ショートカットを使うべきです。たぶん、これは何とかビルドスクリプトを混乱させるでしょうか? – bogdan
新しいバージョンとのリンク中に、古いバージョンのヘッダーファイルを使用していませんか?プリプロセッサのパスを新しいブーストに更新する必要があるかもしれませんか? – Vality
@bogdan私が 'E:/'ドライブにインストールした場合、通常は(Program Files)フォルダーにインストールされます。そして、私はVC2015とVC2107の両方でそれをして以来、私はそれが問題だとは思わない。私はx64ネイティブツールのコマンドプロンプトを使用して調べて、動作するかどうかを調べる予定です。 – Xirema