<div style="text-indent: 2em;">

今天在做VC++编程时,在组建程序时,碰到如下错误:

Linking...
TCPScan.obj : error LNK2001: unresolved external symbol __imp__WSAStartup@8
Debug/TCPScan.exe : fatal error LNK1120: 1 unresolved externals

我的工程中用到了一些winsock函数,例如:

  • WSAStartup()
  • WSACleanup()

等等,这些函数都在头文件winsock2.h中定义过了,我在引用这些函数的时候已经加入了

#include <winsock2.h>

为什么还是出错呢?后来上网查到,原来需要一个动态链接库文件,文件名为 ws2_32.lib。

把这个 ws2_32.lib 加载到项目中去,有两种方法。

  1. 在菜单“工程”->“设置”->“链接”->“对象/库模块”下面输入ws2_32.lib,然后确定即可。如下图: 在菜单“工程”->“设置”->“链接”->“对象/库模块”下面输入ws2_32.lib
  2. 在头文件中加入语句#pragma comment( lib, "ws2_32.lib" ) 来显式加载。 即:
    #include <winsock2.h>
    #pragma comment(lib, "WS2_32")