ビルド時に気付いた点

ビルドは VisualStudio2005 Standard Edition で行いましたが、Windows SDK 6.0 for Windows Vista と Boost.asio の最新版(0.3.9)を使ったため一部ソースの修正が必要でした。今後自力でビルドされる方々のためにもメモを残しておきます。

Windows SDK for Windows Vista でビルドするための変更点

Boost.asio には old_win_sdk_compat.hpp という古い Windows SDK と互換性を保つ仕組があります。Windows SDK 6.0 for Windows Vista でビルドすると、逆にここと競合が起きてしまいコンパイルが通りません。色々調べた挙句、interface.h の _WIN32_WINNT を 0x0501 (_WIN32_WINNT_WINXP) 以上にする必要がありました。*1

Boost.asio 0.3.9 でビルドするための変更点

0.3.8 以降(CVS 上では 2006/7/23 の Commit 時)、エラーの仕組が大幅に変わっているようです。ist/ist_net.h で使われている boost::asio::error という型や、boost::asio::assign_error() が消えているためコンパイルエラーが出ます。それぞれ boost::asio::netdb_errors, boost::asio::make_error_code() に書き換えました。

*1:互換対応自体を指すマクロは BOOST_ASIO_HAS_OLD_WIN_SDK ですが、IN6ADDR_ANY_INIT, NTDDI_VERSION, IPPROTO_IPV6 など複数のマクロ定義が関連しており、最終的に _WIN32_WINNT を変更するのが最も簡単と判断しました。