トップページ > 記事閲覧
DxLib と WinSock2 の共存
名前:くろよん 日時: 2016/10/11 12:16

お世話になってます。 DxLib を使っている環境下で WinSock2 を使う上での質問です。 DxLibではネットワーク関連もサポートされていますが、生の winsock を直接叩く必要がある場合に または外部ライブラリでwinsockが使われている場合に #include <winsock2.h> によるインクルード文が存在する場合に、DxLib側で定義?(あるいはDxlibでのwinsock2系のインクルード?)されているものと衝突し、 多重インクルードが発生してしまいます。 この現象はWinsock2のインクルード前に #define _WINSOCK2API_ を記述し、WinSock2のインクルードガードを定義することで回避できます。 この回避方法のほかに、DxLib と WinSock2 を共存させる方法はありますか?
メンテ

Page: 1 |

Re: DxLib と WinSock2 の共存 ( No.1 )
名前:管理人 日時:2016/10/12 00:54

DxLib.h の中では Windows.h をインクルードしているのですが、Windows.h の中で WinSock.h が インクルードされてしまっているのが原因のようです なので、くろよんさんの方法以外には DxLib.h をインクルードする前に winsock2.h をインクルード するという方法もあります #include <winsock2.h> #include "DxLib.h" 恐らく #define _WINSOCK2API_ を使用するほうが勝手が良いと思いますが…
メンテ
Re: DxLib と WinSock2 の共存 ( No.2 )
名前:yumetodo 日時:2016/10/12 04:47

winsock2を使うときの大前提として、Windows.hより先に読み込むという鉄則があるので、 #if !defined( WINVER ) || ( WINVER < 0x0501 ) #undef WINVER #define WINVER 0x0501 #endif #if !defined( _WIN32_WINNT ) || ( _WIN32_WINNT < 0x0501 ) #undef _WIN32_WINNT #define _WIN32_WINNT 0x0501 #endif #include <winsock2.h> #include "DxLib.h" とするのがまっとうな手段かと。
メンテ
Re: DxLib と WinSock2 の共存 ( No.3 )
名前:くろよん(解決) 日時:2016/10/14 09:26

いろいろな解決法ありがとうございます。 DxLib.h のインクルード前に winsock2.h をインクルードする方法は以前も試したことがありますが、 この時は多重インクルードでうまくいきませんでした。((( またmain.cpp のほかに hoge.hpp hoge.cpp piyo.cppなど複数のファイルで winsock2.h をインクルードする場合に、 うまく回避できないことがあったので混乱してた節があります。(技量不足です...) 今回提案していただいた方法を用いてみます。 ありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存