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 |