我是网络编程的新手,我正在尝试一个教程。这是我试过的程序。
#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。有人告诉我,我应该和我应该安装什么。
答案 0 :(得分:0)
正如Alex Farber所提到的,你必须链接Ws2_32.lib才能让链接器找到WSAStartup的实际代码。他知道(来自winsock2标头)它是如何声明的,但不是他的实际实现,可以在相关的库文件中找到,可以是静态(.lib)或动态(Windows上的dll)。
在提出这类问题之前,您应该尝试自己搜索错误,并且您会发现有很多人遇到同样的问题。
更一般的建议:当你遇到这类问题时,如果是第一次使用&#39;确切的&#39;相同的错误信息不起作用(非常怀疑,但可能会发生)尝试研究一个更普遍的错误&#39;未定义的引用&#39;而且你很容易满足你对知识的渴望(:D)。
如果您想快速了解编译/链接,请参阅How does the compilation/linking process work?。希望这能解决问题并提供一些关于如何寻求帮助的提示^^
度过美好的一天,快乐的编码:)