C++ BOOST\u ASIO\u定义了IOCP的原因或位置?
最近,我使用boost asio启动了一个新项目,但我永久性地遇到了一个错误:C++ BOOST\u ASIO\u定义了IOCP的原因或位置?,c++,boost,boost-asio,C++,Boost,Boost Asio,最近,我使用boost asio启动了一个新项目,但我永久性地遇到了一个错误: “SO\u UPDATE\u CONNECT\u CONTEXT”未在此范围内声明。我知道这个错误的意思,但是我在文件socket\u ops.ipp中找不到进入函数complete\u IOCP\u connect范围所需的BOOST\u ASIO\u HAS\u IOCP的定义 我使用的是g++4.8.1,但在版本4.6.2中也出现了一个错误。操作系统是64位的Windows7。我使用带有标签boost-1.55
“SO\u UPDATE\u CONNECT\u CONTEXT”未在此范围内声明
。我知道这个错误的意思,但是我在文件socket\u ops.ipp
中找不到进入函数complete\u IOCP\u connect
范围所需的BOOST\u ASIO\u HAS\u IOCP
的定义
我使用的是g++4.8.1,但在版本4.6.2中也出现了一个错误。操作系统是64位的Windows7。我使用带有标签boost-1.55.0
的存储库版本(git)
我在过去启动了一些项目,其中没有出现此类错误,那么为什么定义了IOCP,或者在哪里定义了
BOOST\u ASIO\u IOCP
BOOST\u ASIO\u HAS\u IOCP
可能是在Windows上配置BOOST时检测到的
如果不是,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)
您的boost配置为_WIN32_WINNT的值似乎与构建应用程序时使用的值不同
能否尝试将其定义为0x0501或更高
#define _WIN32_WINNT 0x0501 // _WIN32_WINNT_WINXP
(有些相关的问题)是的,这对这个错误有帮助,但实际上在此之后,我得到了许多相同类型的新错误:
BOOST\u APPLICATION\u type\u INDEX\u SELECT没有被声明。我的工作机器上有许多配置错误的选项吗?我的意思是,我使用的是git的非接触式boost版本,还尝试了zip版本(版本1.55.0)(除了将boost.application加载到其中)Mmm。让我直说吧,你是不是拒绝了我的答案,因为它不能解决一个你没有告诉任何人的错误?事实上,您甚至没有提到您正在使用外部库(Boost应用程序)来实现此功能。这需要一个新的问题,一个指向下载位置的链接和一个