创建新进程,有错

flyskytoday 2009-02-25 05:15:25
请大家帮我看一下,创建线程,问题出在哪里
基本不懂,依胡芦画瓢,还是弄不对,郁闷呀


int Tcp_Echo(SOCKET,struct sockaddr_in);//定义

主函数中代码
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
if (_beginthread(Tcp_Echo, BUFLEN, (void*)sockConn)<0) //报错地方
{
printf("creat new thread error\n");
return;
}

错误是:error C2664: '_beginthread' : cannot convert parameter 1 from 'int (unsigned int,struct sockaddr_in)' to 'void (__cdecl *)(void *)'
None of the functions with this name in scope match the target type

全部代码在http://www.namipan.com/d/e0c48a329b97e7f94cc47b6b81d2248d4c82f2ad45040000
...全文
111 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyskytoday 2009-03-11
  • 打赏
  • 举报
回复
真是多谢楼上两位指点。
暂时是用不到了,以后用到再看了
那个程序还是类型未转换的问题
dong364 2009-02-26
  • 打赏
  • 举报
回复
int Tcp_Echo(SOCKET,struct sockaddr_in);//定义

主函数中代码
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
if (_beginthread(Tcp_Echo, BUFLEN, (void*)sockConn) <0) //报错地方
{
printf("creat new thread error\n");
return;
}
/////////////////////////////////////////////////////////////////////
LZ你提的这个问题, 我看你写的代码, 确实给人感觉你是从乡下出来的
extern UINT Tcp_Echo(LPVOID lParam); // 声明,在定义时将lParam进行数据类型转化

...
UINT uID;
HANDLE hThread = (HANDLE)::_beginthreadex(NULL, 0, Tcp_Echo, &sockConn, 0, &uID);
if(hThread == NULL)
...


jackzhhuang 2009-02-26
  • 打赏
  • 举报
回复
函数指针指向的函数类型不符合线程函数的类型,你传进去的是'int (unsigned int,struct sockaddr_in)' (即返回值是int,参数是unsigned int和struct sockaddr_in的函数)

而线程函数必须是'void (__cdecl *)(void *)' ,既没有返回值,且参数是void*的函数。

不一样,所以不行。

我记得winsocket有专门的线程函数,很久没碰了,楼主上网找找。
fangchao918628 2009-02-25
  • 打赏
  • 举报
回复
昨天看书说最好用_beginthreadex
invaliddescriptor 2009-02-25
  • 打赏
  • 举报
回复
友情up
oyljerry 2009-02-25
  • 打赏
  • 举报
回复
线程函数的格式是固定的,你需要遵循...

void Tcp_Echo(LPVOID lpParam);
lwx300 2009-02-25
  • 打赏
  • 举报
回复
//线程函数的写法不对,应该是: void __cdecl ThreadProc(void *lpParameter)。
soloyy 2009-02-25
  • 打赏
  • 举报
回复
线程函数的模式,不用深究
flyskytoday 2009-02-25
  • 打赏
  • 举报
回复
强制转换,暂时是对了,不知道底下会有什么问题
Tcp_Echo----->(void(*)(void *))Tcp_Echo
flyskytoday 2009-02-25
  • 打赏
  • 举报
回复
呵呵,是啊,都是骗来地分

N久以前做web的,有二年不做了,今年重出江湖^&^
flyskytoday 2009-02-25
  • 打赏
  • 举报
回复
晕啊,,,大哥,我一直在找呢

我怎么没搜索到

能否给个搜索地连接?
yekoufeng 2009-02-25
  • 打赏
  • 举报
回复
随便找,要补补了你,你怎么还能有这么多技术分的?
vagrantisme 2009-02-25
  • 打赏
  • 举报
回复
VC最基本的问题。网上一搜一大堆。
flyskytoday 2009-02-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 oyljerry 的回复:]
线程函数的格式是固定的,你需要遵循...

void Tcp_Echo(LPVOID lpParam);
[/Quote]
不太明白 如何改啊

我都不清楚线程函数有什么固定格式,可否给点资料?
谢谢先

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧