windows sdk和wsa启动

时间:2014-07-20 13:28:57

标签: c++ winsock startup winsock2

我是网络编程的新手,我正在尝试一个教程。这是我试过的程序。

#include<winsock2.h>
#include<ws2tcpip.h>
#include<iphlpapi.h>
#include <iostream>


using namespace std;

int main()
{
    WSADATA wsaData;
    int iResult;
    //initialize  winsock
    iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
    if(iResult!=0)
    {
        cout << "Startup Failed:"<<iResult<< endl;
    }

    return 1;
}

我得到的错误是:

D:\CodeBlocks\MinGW\bin\Network\main.cpp|14|undefined reference to `WSAStartup@8'|

再次,这是我第一次做网络programming,我不知道为什么会出现这个错误。我想我应该安装Windows sdk。有人告诉我,我应该和我应该安装什么。

1 个答案:

答案 0 :(得分:0)

正如Alex Farber所提到的,你必须链接Ws2_32.lib才能让链接器找到WSAStartup的实际代码。他知道(来自winsock2标头)它是如何声明的,但不是他的实际实现,可以在相关的库文件中找到,可以是静态(.lib)或动态(Windows上的dll)。

在提出这类问题之前,您应该尝试自己搜索错误,并且您会发现有很多人遇到同样的问题。

更一般的建议:当你遇到这类问题时,如果是第一次使用&#39;确切的&#39;相同的错误信息不起作用(非常怀疑,但可能会发生)尝试研究一个更普遍的错误&#39;未定义的引用&#39;而且你很容易满足你对知识的渴望(:D)。

如果您想快速了解编译/链接,请参阅How does the compilation/linking process work?。希望这能解决问题并提供一些关于如何寻求帮助的提示^^

度过美好的一天,快乐的编码:)