如何链接winsock.lib?

Posted

技术标签:

【中文标题】如何链接winsock.lib?【英文标题】:How to link winsock.lib? 【发布时间】:2012-03-04 05:27:06 【问题描述】:

在我的 C++ 类中,我使用套接字。

我在链接时遇到了一些错误,因为我认为库 winsock.lib 丢失了。

我包括了这些:

#ifdef WIN32
  #include <winsock.h>         
  typedef int socklen_t;
  typedef char raw_type;       
#endif

如何链接库winsock.lib? 我使用的是 Windows XP 和 Visual Studio 2005。

【问题讨论】:

【参考方案1】:

winsock的lib文件为“ws_32.lib”(或“ws2_32.lib”),请确认已添加。

【讨论】:

好的,一个问题.. 有没有一个名为 winsock.lib 的库? 您需要一台时间机器才能回到 16 位版本的 SDK。 我认为正确的库名称是ws2_32.lib 是的,有。以Windows Mobile SDK 5.0 for PocketPC 为例。 找不到 ws_32.lib。【参考方案2】:

我无法找到直接链接显示要使用什么库,但如果你研究this,你会发现,WSOCK32.DLL 支持 windows sockets 1.1,也就是说,可能,您想要WSock32.Lib,而不是Ws2_32.lib 用于windows socket version 2

WSock32.LibWindows SDK 的一部分(我安装了 v6.0A、v7.0A,两者都有这个库)

【讨论】:

【参考方案3】:

一种方法是您可以在 cpp 文件中添加一个 pragma 指令:

#pragma comment(lib, "ws2_32.lib")

另一种方法是您可以将其提供给项目设置,使用构建二进制文件的项目(如果您的解决方案有很多,请不要从库项目中执行此操作)

第三种变体是如果您从命令行调用链接器,则将其作为命令行标志提供

【讨论】:

以上是关于如何链接winsock.lib?的主要内容,如果未能解决你的问题,请参考以下文章

如何在cmake中链接winsock?

如何在C中正确链接winsock2.h? [复制]

如何在 Winsock 中发送文件(http 方式)

Qt (Creator) 与 WinSocks (ws2_32)

如何检查客户端是不是通过 C++ 中的 Winsock 断开连接?

MinGW 链接器错误:winsock