28

初めて Boost を使い始めたところです。詳細は次のとおりです。

  1. Visual Studio 2008 SP1 を使用しています
  2. x64ビルドを行っています
  3. 私はboost::asioのみを使用しています(およびそれが持つすべての依存関係)

コードがコンパイルされ、プロジェクトをブースト ライブラリ (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 で実際にリンクしていることを示しているようです。

4

10 に答える 10

44

問題を解決しました。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
于 2009-07-01T02:54:56.373 に答える
5
#include <boost/system/config.hpp>

私の場合、BOOST_LIB_DIAGNOSTIC は、システムが自動的にリンクされていることを示しませんでした。boost/system/config.hpp をインクルードするだけでこれを解決しました。

于 2014-10-08T17:07:44.280 に答える
1

boost_system ライブラリにリンクする必要があります

于 2009-06-30T21:12:55.457 に答える
0

両方のバージョンが必要でステージ ターゲットを使用したため、x86 バージョンには --stagedir=./stageX86 を使用し、x64 にはデフォルトの ./stage を使用しました。

于 2015-08-19T12:35:43.327 に答える
0

私もこのリンカ エラーと CMake のためにここに来ましたが、私の場合は、デフォルトで CMake がデフォルトで 32 ビットでビルドしようとするという事実でした。これは指定することで修正されました-Ax64

cmake -Ax64 {path to CMakeLists.txt}
于 2016-07-01T16:02:06.363 に答える