我试图构建一个简单的套接字。
#include<stdio.h>
#include<winsock2.h>
#include<ws2tcpip.h>
int getaddrinfo(const char *node,
const char *service,
const struct addrinfo *hints,
struct addrinfo **res);
int main(int argc, char *argv[])
{
WSADATA wsa;
SOCKET a;
printf("Initializing...");
if(WSAStartup(MAKEWORD(2,2),&wsa)!=0);
printf("Failed, Error:%d",WSAGetLastError());
if((a=socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET);
printf("Failed, Error:",WSAGetLastError());
return 0;
}
但是得到错误&#34;未定义的引用...&#34;在所有winsock2相关函数(如WSAStartup)上。
答案 0 :(得分:0)
您需要与ws2_32.lib链接才能获得winsock函数。
如果您正在使用项目文件,请从VS中转到配置属性 - &gt;链接器 - &gt;输入ws2_32.lib并将其添加到其他依赖项。
答案 1 :(得分:0)
未定义的引用错误意味着您尚未将套接字库链接到项目。头文件告诉它函数的外观,但库文件实际上是工作。有关如何执行此操作的详细信息,请参阅this answer。