【问题标题】:How to link winsock.lib?如何链接winsock.lib?
【发布时间】:2023-10-12 19:39:01
【问题描述】:

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

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

我包括了这些:

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

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

【问题讨论】:

    标签: c++ sockets visual-studio-2005 windows-xp winsock


    【解决方案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")

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

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

      【讨论】: