mysql c-api 和 boost::asio 之间的 windows 标头似乎存在冲突。
如果我首先包含 mysql,我会得到:
boost/asio/detail/socket_types.hpp(27) : 致命错误 C1189: #error : WinSock.h 已经包含在内
#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
# if defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)
# error WinSock.h has already been included
# endif // defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)
如果我首先包含 boost::asio 我得到:
include\config-win.h(24) : 警告 C4005: '_WIN32_WINNT' : 宏重新定义
/* Defines for Win32 to make it compatible for MySQL */
#ifdef __WIN2000__
/* We have to do this define before including windows.h to get the AWE API
functions */
#define _WIN32_WINNT 0x0500
#else
/* Get NT 4.0 functions */
#define _WIN32_WINNT 0x0400
#endif
有没有办法解决这个问题,为什么mysql试图强制windows版本和boost试图强制它包含winsock它自己呢?