关于vs2008上的socket链接错误问题

来源:互联网 发布:免费sql数据库 编辑:程序博客网 时间:2024/05/16 04:31

昨天想用socket做一个简单的windows程序, 先拿来了以前在vc6.0上做的一小段代码, 竟然发现在vs2008上不能运行.出现了好多链接错误, 研究了好半天也没有发现是怎么回事.>下来是代码和 错误信息.

正在链接...>
1>tem.obj : error LNK2019: 无法解析的外部符号 __imp__closesocket@4,该符号在函数 _main 中被引用1>tem.obj : error LNK2019: 无法解析的外部符号 __imp__inet_ntoa@4,该符号在函数 _main 中被引用1>tem.obj : error LNK2019: 无法解析的外部符号 __imp__sendto@24,该符号在函数 _main 中被引用1>tem.obj : error LNK2019: 无法解析的外部符号 __imp__recvfrom@24,该符号在函数 _main 中被引用
1>tem.obj : error LNK2019: 无法解析的外部符号 __imp__bind@12,该符号在函数 _main 中被引用
1>tem.obj : error LNK2019: 无法解析的外部符号 __imp__htons@4,该符号在函数 _main 中被引用
1>tem.obj : error LNK2019: 无法解析的外部符号 __imp__htonl@4,该符号在函数 _main 中被引用
1>tem.obj : error LNK2019: 无法解析的外部符号 __imp__socket@12,该符号在函数 _main 中被引用
1>tem.obj : error LNK2019: 无法解析的外部符号 __imp__WSACleanup@0,该符号在函数 _main 中被引用
1>tem.obj : error LNK2019: 无法解析的外部符号 __imp__WSAStartup@8,该符号在函数 _main 中被引用
1>d:\My Documents\Visual Studio 2008\Projects\tem\Debug\tem.exe : fatal error LNK1120: 10 个无法解析的外部命令

代码是:


#include<Winsock2.h>
#include<stdio.h>
int main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
                          
return 1;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
        HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return 1; 
}
SOCKET sockSrv=socket(AF_INET,SOCK_DGRAM,0);
sockaddr_in addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(4546);

bind(sockSrv,(sockaddr*)&addrSrv,sizeof(sockaddr));
char recvBuf[100];
char sendBuf[100];
char temBuf[200];
sockaddr_in addrClient;
int len=sizeof(sockaddr);
while(1){
recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR *)&addrClient,&len);
if('q'==recvBuf[0]){
sendto(sockSrv,"q",strlen("q")+1,0,(SOCKADDR *)&addrClient,len);
printf("Chat end!\n");
break;

}
sprintf(temBuf,"%s say: %s",inet_ntoa(addrClient.sin_addr),recvBuf);
printf("%s\n",temBuf);
printf("Please input data:\n");
gets(sendBuf);
sendto(sockSrv,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR *)&addrClient,len);
}
closesocket(sockSrv);
WSACleanup();

}

编译没有问题的, 主要是链接上的错误,所以就去查msdn。第一次竟然没有发现是哪的错,后在csdn上search了一下后才发现好像是在08上写socket要加上新的链接库  Ws2_32.lib.再查msdn,要求如下:
Header   Declared in Winsock2.h.

Library   Use Ws2_32.lib.

DLL        Requires Ws2_32.dll.

加上后果然成功了。



在新的08上要加入链接库 方法:项目>属性->配置属性->链接器->输入 :附加依赖项 中加入要链接的库即可。

关于vs2008上的socket链接错误问题 - strive_on<wbr>ly - 奋斗,我要一直奋斗...
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 农村父母投靠落户社保怎么办 退休后投靠父母户口怎么办 要离婚想儿子了怎么办 怀孕期间离婚了孩子户口怎么办 常州武进区怎么办居住证明 跟老公离婚了户口怎么办 离婚了不给户口怎么办 父母不给户口本迁户口怎么办 产能置换的煤矿职工怎么办 如果是单位集体户小孩读书怎么办 异地防疫不给打怎么办? 青岛市办理大龄就业困难补贴怎么办 就业登记证掉了怎么办 就业信息填错了怎么办 小孩入学父母无单位怎么办 和公婆住一起很压抑怎么办 不想和公婆一起住怎么办 在家啃老三年了怎么办 新时代卫计工作怎么办 被公司辞退不发工资怎么办 被公司辞退后不发工资怎么办 领导分配的工作太多怎么办 领导故意不给活怎么办 户口迁移后医疗社保怎么办 有了c证考b证怎么办 顶替姐姐上班已到退休年龄怎么办 年龄过60岁厂里拖欠工资怎么办 领导找人顶替我怎么办 宁夏超生了没钱交罚款怎么办? 户口年龄上大了怎么办 孩子年龄报小了怎么办 招工档案年龄有涂改怎么办 退伍军被别人顶替上班怎么办 二孩政策前生的怎么办 孩子晕车怎么办最有效方法得当 事业单位编外人员改革工伤怎么办 工伤仲裁后法院一审判决后怎么办 我媳妇删了我该怎么办 老婆离家出走不照顾小孩怎么办 车停在4s店损坏怎么办 车辆年检贴丢了怎么办