質問

mysql c-apiとboost :: asioの間にWindowsヘッダーとの競合があるようです。

最初にmysqlを含めると、次のようになります:

  

boost / asio / detail / 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を最初に含めると、次のようになります:

  

include \ 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バージョンを強制し、winsockに自己を含めるよう強制しようとするのですか?

役に立ちましたか?

解決

マクロの再定義は単なる警告です。コードは引き続きコンパイルおよびリンクする必要があります。 あなたのコードは問題なく動作すると思います。

他のヒント

試す

#include" winsock2.h"

mysqlとboost :: asioを含める前

この問題を回避する方法が見つからない場合は、MySQL APIを最後の手段としての不透明なポインター

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top