본문 바로가기

Note..

windows.h 와 winsock.h의 충돌

코딩을 하고 디버깅을 하려는데..

warning : 'AF_IPX' 매크로 재정의
같은 warning 및 error가 엄청나게 뿜어져나왔다.
찾아보니 windows.h와 winsock.h가 충돌이 나면서 나오는 경고및 에러라고 한다.

sbspace 님의 블로그 에서 유용한 정보가 있어서 퍼왔다.

충돌이 나는 이유는 windows.h에 winsock.h (구번젼의 winsock) 이 포함되어

재정의 되었다고 나오기에 windows.h에 선언된 구버젼의 winsock을 무시해야 된다.

해결 방법은 밑의 글과 같다. 마음에 드는 걸로 고라 잡길...

 

 

 

해결 방법 하나.

 

windows.h 위에 winsock.h을 선언한다

 

ex> #include <winsock.h>

     #include <windows.h>

 

 

 

해결 방법 둘.

 

프로젝트 속성

프로젝트 속성 
-> C/C++ 
-> Preprocessor 
에서 _WINSOCKAPI_ 를 Define에 추가해 사용합니다.

 

 

해결 방법 셋.

선언시...

 

#ifndef _WINSOCK2API_
#include <WINSOCK2.H>
#include <windows.h>
#endif

 

 

해결 방법 넷.

 

winsock2.h를 .cpp 파일에서 선언한다. 이때 .h에 있는 winsock2.h 종속적인

부분을 바꾸어 컴파일 하면 된다.

 

ex>

network.h

#include <windows.h>

 

class Net

{

        DWORD m_hSocket; // SOCKET m_hSocket;

        ......

};

 

network.cpp

#include <winsock.h>

#include "network.h"

.....

해결완료 ㅎ
 

'Note..' 카테고리의 다른 글

ICMP messages  (0) 2011.11.06
Overlapped I/O and Socket  (0) 2011.09.25
이번에는,,  (1) 2011.08.14
윈도우 폴더, 글자길이제한의 또다른 필요성?!  (0) 2011.08.14
후위표기식 변환 및 계산  (1) 2011.08.11