#include "Winsock2.h"问题
vs08 sp1
新建一个console程序
在程序文件srv.h中如果
#include "Winsock2.h"
#include "windows.h"
包含的话没有问题
#include "windows.h"
#include "Winsock2.h"
出错
错误信息:
>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(91) : warning C4005: “AF_IPX”: 宏重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(460) : 参见“AF_IPX”的前一个定义
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(127) : warning C4005: “AF_MAX”: 宏重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(479) : 参见“AF_MAX”的前一个定义
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(163) : warning C4005: “SO_DONTLINGER”: 宏重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(402) : 参见“SO_DONTLINGER”的前一个定义
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(206) : error C2011: “sockaddr”: “struct”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(485) : 参见“sockaddr”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(384) : error C2143: 语法错误 : 缺少“}”(在“常量”的前面)
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(384) : error C2143: 语法错误 : 缺少“;”(在“常量”的前面)
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(384) : error C2059: 语法错误 : “常量”
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(437) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(437) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(437) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(518) : warning C4005: “IN_CLASSA”: 宏重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(287) : 参见“IN_CLASSA”的前一个定义
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(524) : warning C4005: “IN_CLASSB”: 宏重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(293) : 参见“IN_CLASSB”的前一个定义
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(530) : warning C4005: “IN_CLASSC”: 宏重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(299) : 参见“IN_CLASSC”的前一个定义
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(541) : warning C4005: “INADDR_ANY”: 宏重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(304) : 参见“INADDR_ANY”的前一个定义
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(543) : warning C4005: “INADDR_BROADCAST”: 宏重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(306) : 参见“INADDR_BROADCAST”的前一个定义
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(577) : error C2011: “sockaddr_in”: “struct”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(312) : 参见“sockaddr_in”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(132) : error C2011: “fd_set”: “struct”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(68) : 参见“fd_set”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(167) : warning C4005: “FD_SET”: 宏重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(102) : 参见“FD_SET”的前一个定义
...(太多了 不贴了)
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(874) : 参见“WSASetLastError”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(2197) : error C2375: “WSAGetLastError”: 重定义;不同的链接
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(876) : 参见“WSAGetLastError”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(2214) : error C2375: “WSAIsBlocking”: 重定义;不同的链接
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(878) : 参见“WSAIsBlocking”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(2231) : error C2375: “WSAUnhookBlockingHook”: 重定义;不同的链接
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(880) : 参见“WSAUnhookBlockingHook”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(2248) : error C2375: “WSASetBlockingHook”: 重定义;不同的链接
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(882) : 参见“WSASetBlockingHook”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(2265) : error C2375: “WSACancelBlockingCall”: 重定义;不同的链接
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(884) : 参见“WSACancelBlockingCall”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(2287) : error C2375: “WSAAsyncGetServByName”: 重定义;不同的链接
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(886) : 参见“WSAAsyncGetServByName”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(2314) : error C2375: “WSAAsyncGetServByPort”: 重定义;不同的链接
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(894) : 参见“WSAAsyncGetServByPort”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(2340) : error C2375: “WSAAsyncGetProtoByName”: 重定义;不同的链接
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(902) : 参见“WSAAsyncGetProtoByName”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(2365) : error C2375: “WSAAsyncGetProtoByNumber”: 重定义;不同的链接
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(909) : 参见“WSAAsyncGetProtoByNumber”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(2390) : error C2375: “WSAAsyncGetHostByName”: 重定义;不同的链接
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(916) : 参见“WSAAsyncGetHostByName”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(2417) : error C2375: “WSAAsyncGetHostByAddr”: 重定义;不同的链接
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(923) : 参见“WSAAsyncGetHostByAddr”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(2440) : error C2375: “WSACancelAsyncRequest”: 重定义;不同的链接
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(932) : 参见“WSACancelAsyncRequest”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(2461) : error C2375: “WSAAsyncSelect”: 重定义;不同的链接
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(934) : 参见“WSAAsyncSelect”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(3910) : error C2059: 语法错误 : “}”
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(3910) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(3910) : error C2059: 语法错误 : “}”
1>e:\zd\work\filebank\sourcecode\svn\tortoisesvn\src\fkserver\srvrecieve.h(24) : error C2079: “SrvRecieve::m_addrlocal”使用未定义的 struct“sockaddr_in”
1>e:\zd\work\filebank\sourcecode\svn\tortoisesvn\src\fkserver\srvrecieve.h(24) : error C2079: “SrvRecieve::m_addrrecv”使用未定义的 struct“sockaddr_in”
1>stdafx.cpp
而且先包包含“stdafx.h"再#include "winsock2.h" 也出错。
stdafx.h是这样写的
// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
//
#pragma once
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
// TODO: 在此处引用程序需要的其他头文件
#import "msado15.dll" no_namespace rename("EOF","adoEOF")
//#import "msxml2.dll" //no_namespace
这咋回事?