mingw + msys를 사용하여 APP를 작성하려고합니다.Windows에서 getaddrinfo()를 사용하는 방법
내 코드는 winsock을 사용합니다. 내가 그것을 컴파일 할 때 나는 오류 메시지가 다음 걸릴 :
$ gcc -o sample sample.c -lws2_32
C:\Users\user\AppData\Local\Temp\ccsdWlQR.o:sample.c:(.text+0xeb): undefined reference to `getaddrinfo'
collect2.exe: error: ld returned 1 exit status
이 어떤 헤더를 변경 리눅스에서 마이그레이션 내 코드입니다.
#include <stdio.h>
#include <WinSock2.h>
#include <WS2tcpip.h>
main(int argc,char *argv[])
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2), &wsaData);
printf("Hello world with winsock");
int sock;
char *hostAddress;
struct addrinfo hints,*res;
int err;
memset(&hints,0,sizeof(hints));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_DGRAM;
getaddrinfo("127.0.0.1",12345,&hints,&res);
printf("getaddrinfo %s\n",strerror(errno));
printf("getaddrinfo : %s \n",gai_strerror(err));
struct sockaddr_in *addr;
struct addrinfo *rp;
for (rp = res; rp != NULL; rp = rp->ai_next) {
addr = (struct sockaddr_in *)rp->ai_addr;
printf("dstPort = %d\n",ntohs(addr->sin_port));
printf("dstAddr = %s\n",inet_ntoa((struct in_addr)addr->sin_addr));
hostAddress = inet_ntoa((struct in_addr)addr->sin_addr);
}
WSACleanup();
}
Windows에서 gettarrinfo()
은 어떻게 사용할 수 있습니까?
dgreenday의 글을 읽은 후 메시지가 변경된다는 추가 정보입니다.
sample.c:22:2: warning: passing argument 2 of 'getaddrinfo' makes pointer from i
nteger without a cast [enabled by default]
getaddrinfo("124.0.0.1",12345,&hints,&res);
^
In file included from sample.c:4:0:
c:\mingw\include\ws2tcpip.h:391:12: note: expected 'const char *' but argument i
s of type 'int'
int WSAAPI getaddrinfo (const char*,const char*,const struct addrinfo*,
동일한 질문은 여기에 있습니다 : http://stackoverflow.com/questions/5220190/undefined-reference-to-getaddrinfo – dgreenday
나는이 사이트가 말한 것처럼 Ws2_32.Lib를 연결하고'#define _WIN32_WINNT 0x0501'을 추가하려고했습니다. 오류 마사지가 변경되었습니다. – user1345414