2014-04-29 4 views
0

Eclipse의 내 Windows 시스템에서 C로 고전 클라이언트 서버 프로그램을 만들었습니다. 코드 자체는 오류를 생성하지 않습니다. 내가 얻는 유일한 오류는 라이브러리에 관한 것입니다.클라이언트 서버 프로그램 C Windows - 라이브러리 충돌

error "ws2tcpip.h is not compatible with winsock.h. Include winsock2.h instead". 

유일한 문제는 내가 winsock.h을 포함하고 포함하지 않은 것입니다 : 나는 다음과 같은 라이브러리를 포함했다 :

#include <windows.h> 
#include <winsock2.h> 
#include <ws2tcpip.h> 
#include <stdlib.h> 
#include <stdio.h> 

을하지만이 프로젝트를 빌드 할 때 나타나는 오류가 있습니다 그들이 지정한대로 winsock2.h 만 사용하십시오.

이 문제를 어떻게 해결할 수 있습니까?

UPDATE

는 이제 다음과 같은 순서로 라이브러리를 정의했습니다 :

#define _WINSOCKAPI_ /* Prevent inclusion of winsock.h in windows.h */ 

#include <winsock2.h> 
#include <ws2tcpip.h> 
#include <windows.h> 
#include <stdlib.h> 
#include <stdio.h> 

을하지만 지금은 많은 오류를 얻을 :

undefined reference to `[email protected]' 
undefined reference to `[email protected]'  
undefined reference to `[email protected]' 
undefined reference to `[email protected]'  
undefined reference to `[email protected]' 
undefined reference to `[email protected]' 
undefined reference to `[email protected]' 
undefined reference to `[email protected]' 

UPDATE 2

나는 어쩌면이 경고는 아직도 점점 계속 오류와 함께 할 수있는 뭔가가 있다고 생각 :

ignoring #pragma comment [-Wunknown-pragmas] 

답변

1

winsock2.h가 상단에 라인을 가지고 :

#define _WINSOCKAPI_ /* Prevent inclusion of winsock.h in windows.h */ 

당신은 windows.h 전에 winsock2.h을 포함해야합니다.

+0

답장을 보내 주셔서 감사합니다. 나는 꽤 이해하지 못한다. 내가 windows.h보다 먼저 포함시킬 필요가있는 것은 무엇인가? winsock2.h입니까? 왜냐하면 나는 그것을하고 #define을 추가했으나 이제는 더 많은 오류가 발생합니다. – Adam

+1

windows.h를 포함하면 windows.h에 winsock.h가 포함됩니다. 이를 방지하려면 windows.h보다 먼저 winsock2.h를 포함시켜야합니다. 추가 오류 –

+0

으로 질문을 업데이트하십시오. 업데이트 된 질문을 살펴보십시오. – Adam

관련 문제