首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++网络编程有关问题 出现link异常求解

2012-09-14 
C++网络编程问题 出现link错误求解链接已加入 WS2_32.lib运行是报错 如下1MSVCRTD.lib(crtexe.obj) : err

C++网络编程问题 出现link错误求解
链接已加入 WS2_32.lib 运行是报错 如下
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用
1>C:\Users\LiQiang\documents\visual studio 2010\Projects\TCPSRV\Debug\TCPSRV.exe : fatal error LNK1120: 1 个无法解析的外部命令

这是参照 孙鑫讲的来编写的 编写工具vs2010 
代码
#include<Winsock2.h>
#include<stdio.h>
void mian()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 2, 2 );

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) 
{
return;
}

if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 )
{
WSACleanup( );
return; 
}
SOCKET sockSrv = socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(6000);
//addrSrv.sin_zero
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
listen(sockSrv,5); //等待最大连接数

SOCKADDR_IN addrClient;
int len = sizeof(SOCKADDR);
while(1)
{
SOCKET sockConn = accept(sockSrv,(SOCKADDR*)&addrClient,&len);
char sendBuf[100];
sprintf_s(sendBuf,"welcome %s to WINDOWS API",inet_ntoa(addrClient.sin_addr));
send(sockConn,sendBuf,strlen(sendBuf)+1,0);
char recvBuf[100];
recv(sockConn,recvBuf,100,0);
printf("%s\n",recvBuf);
closesocket(sockConn);
}
}

[解决办法]
无法解析的外部符号 _main;,说明建的是win32应用程序而不是控制台程序,找不到入口函数main.
把工程类型修改为控制台程序,项目属性-》配置属性-》链接器-》系统;
将“系统”右侧的“子系统”选项修改为“控制台(/SUBSYSTEM:CONSOLE)”。

热点排行