C++Builder 2007 에서 'TClientSocket' 과 'TIdHTTP' 를 같이 사용하려할 때 발생했다.


'TClientSocket' 은 winsock v1 을 'TIdHTTP' 는 winsock v2 를 사용하여 발생하는 문제다.


인터넷을 열심히 검색해보면 비슷하지만 여러 해결책을 제시한다.


1. 'Conditional Defines' 에 '_WINSOCKAPI_' 추가


2. 다음 코드를 #include <windows.h> 이전에 추가

#ifndef _WINSOCKAPI_

#define _WINSOCKAPI_

#endif


3. 'winsock2.h' 를 'windows.h' 이전에 포함



어떤 방법이든 그대로만 하면 다 해결되지 않고 또 다른 에러에 빠져든다.


그런데 모든 방법은 winsock v1 을 사용하기 전에 winsock v2 를 포함하여 대체하라는 방향을 제시한다.

(winsock2.h 에는 _WINSOCKAPI_ 가 정의되어 winsock v1 의 코드를 배제시키게 되어있다.)


그런데 위의 해결책이 통하지 않는 이유는 어디선가에서 winsock v1 이 먼저 포함되었기 때문이다.


그곳은 'vcl.h' 인 것 같다.


다른 코드 수정없이 모든 cpp 파일에서 #include <vcl.h> 부분을 다음과 같이 'winsock2.h' 를 먼저 포함하게 바꾸니 해결되었다.


#include <winsock2.h>

#include <vcl.h>

#pragma hdrstop


'Windows > 문제해결' 카테고리의 다른 글

[RC Error] Invalid bitmap format  (0) 2009.08.13
[RAD] Process 종료 메세지  (0) 2008.04.03
[INI] 값 저장/참조에 있어 주의점  (0) 2007.06.04
[WIN32] SetWindowLong 이용시 객체 접근  (0) 2007.06.04
[CB] 주석문 \ 에러  (0) 2007.05.25

+ Recent posts