2010-01-01 2 views
1

winsock2.h를 포함하면 약 60 개의 재정의 오류가 발생합니다. 나는 약간의 주위에 winsock2.h b4 windows.h를 포함하는 몇 가지 조언을 발견 주위 사냥. 나는 그것을했고 그것은 오류를 해결했다. 내 문제와 질문은 정확하게 어떻게해야하는지에 관한 문제입니다. windows.h를 명시 적으로 포함시키지 않았고 stdafx.h 또는 stdafx.cpp에서 나를 위해 수행되었습니다.stdafx.h winsock2 재정의 오류 포함

stdafx.h에 포함 된 Windows.h를 즉시 b4에 winsock2.h를 추가했습니다. 이것은 이것에 대해 갈 올바른 방법입니까 아니면 더 좋은 방법이 있습니까?

program_name.rc의 주석으로 판단 일부 옵션 또는 구성 매개 변수의 결과로 stdafx.h의 windows.h include가 포함되었을 수 있지만이 참조를 찾을 수 없습니다. 거기에 stdafx.h에 포함 된 파일을 지정하는 방법이 있습니까?

BTW, WIN32_LEAN_AND_MEAN은 b4 stdafx.h에서 windows.h를 호출하도록 정의되었습니다.

Visual C++ 6.0 및 'Windows Server 2003 PSDK'를 사용하고 있습니다.이 프로그램은 스트레이트 C++, mfc, no net, 단순한 바닐라입니다.

답변

0

괜찮습니다. winsock2.h를 보면, 아직 포함되지 않았다면 windows.h가 포함되어 있음을 알 수 있습니다.

+0

을 WINDOWS.H 필요 stdafx.h 및 stdafx.cpp의 주석은 사용자가 stdafx.h에 추가 포함을 추가하기위한 것입니다. Solar.pch이 미리 컴파일 된 헤더 // \t stdafx 될 것 // \t 단지 표준을 포함 ​​포함 소스 파일 : 나는 // stdafx.cpp stdafx.cpp에서 주석에 대한 호기심 조금 해요 .obj에 사전 컴파일 된 유형 정보가 포함됩니다. '유형'정보 란 무엇입니까? 누군가가 모범을 보여줄 수 있습니까? –

+0

stdafx.h에 include를 추가함으로써 프리 컴파일 된 헤더가 더 효율적으로 생각됩니다. 그러나 미리 컴파일 된 헤더가 stdafx. *없이 작동한다는 것은 알고 있습니다. 프로젝트 설정에서 옵션을 켜면 *. 적어도 Visual Studio에서는 stdafx. * 항목이 없어도 항상 모든 프로젝트에 대해 .pch를 만듭니다. 다른 사람이 '유형'정보에 대한 자세한 정보가있을 수 있습니다. 나는 생각하기는하지만 여전히 건물의 .pch 파일과 함께 사용되는 정보의 일부일뿐입니다. –

3

stdafx.h에 원하는 것을 넣을 수 있습니다. windows.h 앞에 winsock2.h에 #include를 추가하는 것이 좋습니다.

#define WIN32_LEAN_AND_MEAN 
#include <winsock2.h> 
#include <windows.h> 

에 stdafx.h는 미리 컴파일 된 헤더에 대한 끔찍한 이름 : 당신이 다른 헤더를 포함하기 전에이 정의되어 있도록 나는 WIN32_LEAN_AND_MEAN 헤더를 이동할 것입니다. Visual Studio에서 모든 자동 생성 프로젝트에이 기능을 사용하는 이유는 알 수 없습니다. 그것은 미리 컴파일 된 헤더에 불필요한 신비의 공기를 제공합니다. 내 프로젝트에서 나는 보통 'precompiled.h'와 'precompiled.cpp'를 사용하기 위해 미리 컴파일 된 헤더를 설정했다.

Noel Llopis는 여기에 무슨 일이 벌어지고 있는지에 대한 배경 정보가 더 필요하면 미리 컴파일 된 헤더에 훌륭한 기사가 있습니다. 'The Care and Feeding of Precompiled Headers'

+0

+1 흥미로운 링크 – Asaf

0

당신은, WinSock2.h 전에 WINDOWS.H 포함되어 있는지 확인하십시오 당신이 WinSock2.h을 포함하고 어디든지,이 STDAFX.H 전에 포함되어 있는지 확인 및/또는으로 판단