windows.h、winsock2.h一起包含就出错,为什么?

seethingreal 2003-10-20 04:57:37
做一DLL,windows.h,winsock2.h一起包含即出一堆错误,但加上vcl.h就好了,不想要vcl.h,什么原因?
...全文
128 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjy1001 2003-10-20
  • 打赏
  • 举报
回复
声明冲突了 导致你无法正常使用后面定义的
sprewellkobe 2003-10-20
  • 打赏
  • 举报
回复
同意,声明冲突
我不懂电脑 2003-10-20
  • 打赏
  • 举报
回复
这两个头文件有声明冲突的地方,vcl定义了几个宏解决这个问题。如:

#if !defined(_WINDOWS_) // Don't optimize if WINDOWS.H has already been included
#if !defined(NO_WIN32_LEAN_AND_MEAN)
#define WIN32_LEAN_AND_MEAN // Enable LEAN_AND_MEAN support
#define _VCL_LEAN_AND_MEAN // BCB v1.0 compatible
#endif // NO_WIN32_LEAN_AND_MEAN
#endif // _WINDOWS_

#if !defined(COM_NO_WINDOWS_H) // Make sure COM Headers don't include WINDOWS.H/OLE2.H
#define COM_NO_WINDOWS_H
#define UNDEF_COM_NO_WINDOWS_H
#endif

#if !defined(RPC_NO_WINDOWS_H) // Make sure RPC Headers don't include WINDOWS.H
#define RPC_NO_WINDOWS_H
#define UNDEF_RPC_NO_WINDOWS_H
#endif
tigerhohoo 2003-10-20
  • 打赏
  • 举报
回复
winsock.h 和 winsock2.h不能同时包含.
seethingreal 2003-10-20
  • 打赏
  • 举报
回复
BCB6+2000 Server,包含Winsock.h没问题的,包含winsock2.h即出什么FD_SET多重声明一类的错误.
tigerhohoo 2003-10-20
  • 打赏
  • 举报
回复
下面是windows.h中的一段代码.可能你的程序在调用的时候_WIN32_WINNT 的值有问题,从而实际include 的是winsock.h

#if(_WIN32_WINNT >= 0x0400)
#if defined(__BORLANDC__) && !defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)
#include <winsock2.h>
#endif /* __BORLANDC__ */
#if defined(__BORLANDC__) && !defined(_WINSOCKAPI_) && !defined(_MSWSOCK_)
#include <mswsock.h>
#endif /* __BORLANDC__ */
#else
#if defined(__BORLANDC__) && !defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)
#include <winsock.h>
#endif /* __BORLANDC__ */
#endif /* _WIN32_WINNT >= 0x0400 */

#endif
seethingreal 2003-10-20
  • 打赏
  • 举报
回复
顶顶顶

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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