Pregunta

Parece haber un conflicto con los encabezados de Windows entre mysql c-api y boost :: asio.

Si incluyo mysql primero obtengo:

  

boost / asio / detail / socket_types.hpp (27): error fatal C1189: #error: WinSock.h ya se ha incluido

#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
# if defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)
#  error WinSock.h has already been included
# endif // defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)

Si incluyo boost :: asio primero obtengo:

  

include \ config-win.h (24): advertencia C4005: '_WIN32_WINNT': redefinición de macros

/* 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

¿Hay alguna forma de evitar esto, y por qué mysql está tratando de forzar la versión de Windows y aumentar tratando de forzar que incluya winsock de todos modos?

¿Fue útil?

Solución

La redefinición de macros es solo una advertencia. Su código aún debe compilarse y vincularse. Creo que su código incluso funcionará sin ningún problema.

Otros consejos

Probar

#include " winsock2.h "

antes de incluir mysql y boost :: asio

Si no puede encontrar una manera de solucionar este problema, puede intentar ajustar la API de MySQL detrás de un puntero opaco como último recurso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top