socket lib 编译问题

guoqiang721029 2009-03-06 01:20:16
我在VC2008下编译一个工程,出现了以下错误,在网上找了一遍也没有得到解决,希望遇到此类问题的朋友赐教。
起初觉得是头文件相互包含了,但查了一下没有发现相互包含。

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\winsock2.h(176) : error C2011: “timeval”: “struct”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(111) : 参见“timeval”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(232) : error C2011: “hostent”: “struct”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(167) : 参见“hostent”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(245) : error C2011: “netent”: “struct”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(180) : 参见“netent”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(252) : error C2011: “servent”: “struct”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(187) : 参见“servent”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(264) : error C2011: “protoent”: “struct”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(199) : 参见“protoent”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(360) : error C2011: “WSAData”: “struct”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(322) : 参见“WSAData”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(458) : error C2011: “sockproto”: “struct”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(494) : 参见“sockproto”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(500) : error C2011: “linger”: “struct”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(531) : 参见“linger”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(513) : warning C4005: “SOMAXCONN”: 宏重定义
...全文
446 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
luciferisnotsatan 2010-12-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 topwork 的回复:]

把Windows.h和Winsock2.h换个位置。把Winsock2.h放前面。
[/Quote]
+1
baisoo 2010-12-16
  • 打赏
  • 举报
回复
搞了好久终于搞出来了
1、修改sockets-config.h取消SSL支持
/* OpenSSL 支持 */
#define HAVE_OPENSSL

2、修改include\openssl\dtls1.h中的#include <winsock.h>为<winsock2.h>
caixin99 2009-03-21
  • 打赏
  • 举报
回复
估计是lib或头文件的问题。
attributemismatch 2009-03-06
  • 打赏
  • 举报
回复
up
guoqiang721029 2009-03-06
  • 打赏
  • 举报
回复
没有ifndef这类的错误是不存在的。
topwork 2009-03-06
  • 打赏
  • 举报
回复
把Windows.h和Winsock2.h换个位置。把Winsock2.h放前面。
  • 打赏
  • 举报
回复
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”的声明
这么多重定义?你把他的头文件什么看看,看ifndef等判断加了没.

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧