我已经启动了另一个在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):未定义参考`getaddrinfo'
C:\ Users \ rahul \ AppData \ Local \ Temp \ ccWqZC7C.o:ak1.c :( . text 0x1fa):对“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:最终链接失败:操作无效
collect2.exe:错误:ld返回1退出状态
此错误与用于Windows7的MICROSOFT SDK有关,意味着我的系统上未添加这些库 . 我检查过“Advapi32”不在我的micrsoft SDK下 .
请帮忙 !!!
1 回答
您're using GCC (presumably MinGW) which doesn' t使用Microsoft的SDK .
getaddrinfo()
和freeaddrinfo()
在MinGW的ws2tcpip.h
实现中声明,但仅限于WinXP或更高版本的目标 .将
-D_WIN32_WINNT=0x0501
添加到编译器命令行以定位XP .