C ++ mysql und Asio-Header Konflikt steigern
-
10-07-2019 - |
Frage
Es scheint ein Konflikt mit den Fenstern Header zwischen dem mysql c-api zu sein und boost :: asio.
Wenn ich schließen mysql erste erhalte ich:
boost / Asio / detail / socket_types.hpp (27): schwerwiegender Fehler C1189: #error: WINSOCK.H bereits aufgenommen worden
#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
# if defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)
# error WinSock.h has already been included
# endif // defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)
Wenn ich boost :: asio sind erste erhalte ich:
include \ config-win.h (24): Warnung C4005: '_WIN32_WINNT': Makro Neudefinition
/* 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
Gibt es eine Möglichkeit, um dieses, und warum versucht mysql die Windows-Version zu zwingen, und steigern Sie versuchen zu erzwingen, dass es sind ohnehin seine Selbst Winsock?
Lösung
Das Makro Neudefinition ist nur eine Warnung. Der Code sollte noch kompilieren und verknüpfen. Ich denke, Ihr Code wird auch ohne Probleme arbeiten.
Andere Tipps
Versuchen
#include "winsock2.h"
, bevor einschließlich mysql und boost :: asio
Wenn Sie nicht einen Weg, um dieses Problem zu umgehen finden können, können Sie versuchen, die MySQL API Einwickeln hinter einem