套接字构建错误
Socket building error
我正在尝试构建一个简单的套接字。
#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;
}
但是在所有与 winsock2 相关的函数(如 WSAStartup)上出现错误 "Undefined reference to..."。
您需要 link 和 ws2_32.lib 才能获得 winsock 功能。
如果您使用的是项目文件,请从 VS 中转到配置属性 -> 链接器 -> 输入并将 ws2_32.lib 添加到附加依赖项。
未定义的引用错误意味着您没有将套接字库链接到您的项目。头文件告诉它函数是什么样的,但库文件实际上完成了工作。有关如何操作的详细信息,请参阅 this answer。
我正在尝试构建一个简单的套接字。
#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;
}
但是在所有与 winsock2 相关的函数(如 WSAStartup)上出现错误 "Undefined reference to..."。
您需要 link 和 ws2_32.lib 才能获得 winsock 功能。
如果您使用的是项目文件,请从 VS 中转到配置属性 -> 链接器 -> 输入并将 ws2_32.lib 添加到附加依赖项。
未定义的引用错误意味着您没有将套接字库链接到您的项目。头文件告诉它函数是什么样的,但库文件实际上完成了工作。有关如何操作的详细信息,请参阅 this answer。