【问题标题】:Winsock redefinition errors [duplicate]Winsock 重新定义错误 [重复]
【发布时间】:2012-07-14 18:51:52
【问题描述】:

我正在用 Visual C++ 2010 编译一个项目,但我遇到了一些 Winsock 重新定义的问题。

首先我得到:

syntax error : identifier 'SOCKADDR_STORAGE'

但如果我包含 winsock 或 winsock2 或 ws2tcpip 我会收到很多类似这样的错误:

error C2011: 'sockaddr' : 'struct' type redefinition 
error C2011: 'WSAData' : 'struct' type redefinition
error C2011: 'linger' : 'struct' type redefinition

【问题讨论】:

  • 你能发布一个代码示例吗?也尝试添加#define WIN32_LEAN_AND_MEAN
  • 让我们看看来自违规模块的#include 块。
  • 我没有任何花哨的包含,我有这些 //#include #include //#include 我必须将它们包含在几个.cpp 文件。

标签: c++ windows visual-studio-2010 winsock redefinition


【解决方案1】:

您的问题是,通过包含Windows.h,您也已经包含了winsock.h。你的问题出现在这里,包括winsock2.hws2tcpip.h 将尝试重新定义winsock.h 中的一些定义

通过在您的Windows.h 包含之前使用#define WIN32_LEAN_AND_MEAN,您可以阻止编译器包含Windows.h 附带的许多额外内容

【讨论】:

  • 在花费大量时间尝试解决此问题后,您的解释不仅有效而且完全有意义。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-01
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
  • 2014-08-22
相关资源
最近更新 更多