用c语言的Winsock程序不起作用

时间:2013-04-16 05:27:25

标签: sockets compiler-construction mingw

我已经启动了另一个在Windows7上用C语言运行Winsock的程序。

我在msdn上找到了这个帮助: http://msdn.microsoft.com/en-us/library/windows/desktop/ms737591%28v=vs.85%29.aspx

此程序无效并显示以下错误:

$ gcc ak1.c -o ak1.exe -lwsock32 -lws2_32 -lAdvapi32 -lmswsock

C:\ Users \ rahul \ AppData \ Local \ Temp \ ccWqZC7C.o:ak1.c :(。text + 0x109):undefined re ference to“getaddrinfo”

C:\ Users \ rahul \ AppData \ Local \ Temp \ ccWqZC7C.o:ak1.c :(。text + 0x1fa):undefined re ference to`freeaddrinfo'

c:/ mingw / bin /../ lib / gcc / mingw32 / 4.7.2 /../../../../ mingw32 / bin / ld.exe:C:\ Users \ a mit \ AppData \ Local \ Temp \ ccWqZC7C.o:“。eh_frame”部分中的错误重定位地址0x20

c:/ mingw / bin /../ lib / gcc / mingw32 / 4.7.2 /../../../../ mingw32 / bin / ld.exe:final link  失败:操作无效

collect2.exe:错误:ld返回1退出状态

此错误与MICROSOFT SDK for Windows7有关,意味着我的系统上未添加这些库。 我检查过“Advapi32”不在我的micrsoft SDK下。

请帮助!!!

1 个答案:

答案 0 :(得分:0)

您正在使用不使用Microsoft SDK的GCC(可能是MinGW)。 getaddrinfo()freeaddrinfo()在MinGW的ws2tcpip.h实现中声明,但仅限于WinXP或更高版本的目标。

-D_WIN32_WINNT=0x0501添加到编译器命令行以定位XP。