문제

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를 불투명 포인터 최후의 수단으로.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top