Pergunta

Parece haver um conflito com os cabeçalhos janelas entre o mysql c-api e boost :: asio.

Se eu incluem mysql primeiro eu recebo:

boost / ASIO / detail / socket_types.hpp (27): Erro fatal C1189 de erro: #Error: WINSOCK.H já foi incluído

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

Se eu incluir boost :: asio primeiro eu recebo:

incluem \ config-win.h (24): Aviso C4005: '_WIN32_WINNT': redefinição macro

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

Existe alguma maneira de contornar isso, e porque é mysql tentando forçar a versão do Windows e aumentar a tentar impor que incluem WINSOCK sua auto afinal?

Foi útil?

Solução

A redefinição macro é apenas um aviso. Seu código ainda deve compilar e link. Eu acho que o código vai mesmo trabalhar sem qualquer problema.

Outras dicas

Tente

#include "winsock2.h"

antes de incluir mysql e boost :: asio

Se você não pode encontrar uma maneira de contornar este problema, você pode tentar envolver o API MySQL atrás de um opaca ponteiro como um último recurso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top