最近我使用boost asio开始一个新项目,但我永远收到错误:
'SO_UPDATE_CONNECT_CONTEXT' was not declared in this scope
。我知道这个错误意味着什么,但我无法找到BOOST_ASIO_HAS_IOCP
的定义,这是complete_iocp_connect
文件socket_ops.ipp
中函数boost-1.55.0
的范围所必需的。
我使用的是g ++ 4.8.1,但版本4.6.2也出错了。操作系统是Windows 7 64位。我使用带有标记BOOST_ASIO_HAS_IOCP
的存储库版本(git)。
我过去曾经发现过一些没有发生过这样的错误的项目,那么为什么或在哪里定义了{{1}}?
答案 0 :(得分:2)
BOOST_ASIO_HAS_IOCP
。
如果不是,boost / asio / detail / config.hpp定义它:
#if !defined(BOOST_ASIO_HAS_IOCP)
# if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400)
# if !defined(UNDER_CE)
# if !defined(BOOST_ASIO_DISABLE_IOCP)
# define BOOST_ASIO_HAS_IOCP 1
# endif // !defined(BOOST_ASIO_DISABLE_IOCP)
# endif // !defined(UNDER_CE)
# endif // defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400)
# endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
#endif // !defined(BOOST_ASIO_HAS_IOCP)
似乎您的助推器配置了_WIN32_WINNT的不同值,而不是在构建应用程序时使用的值。
您可以尝试将其定义为0x0501或更高吗?
#define _WIN32_WINNT 0x0501 // _WIN32_WINNT_WINXP