서버 관련 함수중

mswsock.h 안에 WSAID_CONNECTEX 라던가, LPFN_CONNECTEX 같은것이 있습니다.

 

문제는 vs2010에서 이전 vs2005에서 작업한걸 불러오면 여기서 정의되지 않은 심볼이라고 에러 나오더군요.

 

코드 정의창에선 나오는데 왜 그런가 하고 보다가, 위에 보니

 

#if(_WIN32_WINNT >= 0x0501)

 

로 해놨더군요... orz

 

참고로 프로젝트에선 #define _WIN32_WINNT    (0x0500) 로 정의 되었으니...

그 이하 정의된 부분이 다 스킵되어서 컴파일이 안되었던 거였습니다.. ㅠㅠ

 

해결을 위해 위의 0x500 을 0x501로 바꿧습니다.. 

 

 

참고로 MS에선 각 OS마다 사용하는 라이브러리를 구분하기 위해 위의 정의문이 각각 있습니다.

Minimum system required

Macros to define

Windows Server 2003

_WIN32_WINNT>=0x0502

WINVER>=0x0502

Windows XP

_WIN32_WINNT>=0x0501

WINVER>=0x0501

Windows 2000

_WIN32_WINNT>=0x0500

WINVER>=0x0500

Windows NT 4.0

_WIN32_WINNT>=0x0400

WINVER>=0x0400

Windows Me

_WIN32_WINDOWS=0x0500

WINVER>=0x0500

Windows 98

_WIN32_WINDOWS>=0x0410

WINVER>=0x0410

Windows 95

_WIN32_WINDOWS>=0x0400

WINVER>=0x0400

Internet Explorer 6.0

_WIN32_IE>=0x0600

Internet Explorer 5.6

_WIN32_IE>=0x0560

Internet Explorer 5.01, 5.5

_WIN32_IE>=0x0501

Internet Explorer 5.0, 5.0a, 5.0b

_WIN32_IE>=0x0500

Internet Explorer 4.01

_WIN32_IE>=0x0401

Internet Explorer 4.0

_WIN32_IE>=0x0400

Internet Explorer 3.0, 3.01, 3.02

_WIN32_IE>=0x0300

 

OS 이외에 컴파일러에 대한 정의문도 따로 있습니다.

 

MS Visual C++의 컴파일러 자체 매크로 상수


VC++4.0: _MSC_VER = 1000 ( Visual C++ 4.x )
VC++5.0: _MSC_VER = 1100 ( Visual C++ 5 )
VC++6.0: _MSC_VER = 1200 (Visual C++ 6 )
VC++7.0: _MSC_VER = 1300 (Visual C++ .NET )
VC++8.0: _MSC_VER = 1400( Visual C++ .NET 2005 )
VC++9.0: _MSC_VER = 1500( Visual C++ .NET 2008 )

 

+ Recent posts