C ++ MySQL 및 부스트 ASIO 헤더 충돌
-
10-07-2019 - |
문제
MySQL C-Api와 Boost :: Asio 사이의 Windows 헤더와 충돌하는 것 같습니다.
MySQL을 먼저 포함 시키면 다음을 얻습니다.
부스트/ASIO/세부 사항/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를 먼저 포함 시키면 다음과 같습니다.
포함 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를 강요하려고 노력하고 있습니까?
해결책
매크로 재정의는 경고 일뿐입니다. 코드는 여전히 컴파일 및 링크해야합니다. 나는 당신의 코드가 아무런 문제없이 작동 할 것이라고 생각합니다.
다른 팁
노력하다
#include "winsock2.h"
MySQL 및 Boost :: Asio를 포함시키기 전에
이 문제를 해결할 수있는 방법을 찾을 수 없다면 MySQL API를 불투명 포인터 최후의 수단으로.
제휴하지 않습니다 StackOverflow