创建多线程

jennyfy 2009-03-21 08:12:38
hThread=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ProcessFile(str), NULL, 0, &ThreadID);
以上为创建线程的语句,ProcessFile(str)是入口函数,为void型,调试时出现下列错误:

error C2440: 'type cast' : cannot convert from 'void' to 'unsigned long (__stdcall *)(void *)'
请各位高手指点,谢谢
...全文
142 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
m2002g 2009-03-27
  • 打赏
  • 举报
回复
hThread=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ProcessFile,(LPVOID)str, 0, &ThreadID);
caixin99 2009-03-26
  • 打赏
  • 举报
回复
ProcessFile参数类型有问题
jackzhhuang 2009-03-26
  • 打赏
  • 举报
回复
傳入的回調函數類型不正確。
Wolf0403 2009-03-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 bitxinhai 的回复:]
hThread=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ProcessFile(str), NULL, 0, &ThreadID);
改为:
hThread=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ProcessFile(), NULL, 0, &ThreadID);
并且
ProcessFile只能定义为:
ProcessFile(LPVOID )类型
[/Quote]

你 ProcessFile 后面的括号什么意思?
rilon1988 2009-03-24
  • 打赏
  • 举报
回复
用ProcessFile可以
xfinal2006 2009-03-24
  • 打赏
  • 举报
回复
ProcessFile 改成static的
bitxinhai 2009-03-24
  • 打赏
  • 举报
回复
hThread=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ProcessFile(str), NULL, 0, &ThreadID);
改为:
hThread=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ProcessFile(), NULL, 0, &ThreadID);
并且
ProcessFile只能定义为:
ProcessFile(LPVOID )类型
Wolf0403 2009-03-24
  • 打赏
  • 举报
回复
ProcessFile(str)

这是什么?
楼上一个二个,有仔细看了的没?
xiaokunshuai 2009-03-23
  • 打赏
  • 举报
回复
一、线程入口函数的参数类型是个长指针,而且VC有严格的类型检查,此处声明和调用必须强制转换为LPVOID。
二、VS2005中,用Afx版的创建线程函数时,线程入口函数的调用约定应该是__cdecl。
  • 打赏
  • 举报
回复
ProcessFile声明类型不匹配啊,你匹配不就可以了。
kingsoft55555 2009-03-23
  • 打赏
  • 举报
回复
mark
060 2009-03-21
  • 打赏
  • 举报
回复
不是类型问题 而是调用约定问题。

在C、C++里有多种调用约定,他指示了函数参数的入栈顺序和处理方式, 用户一般不需要了解调用约定。

但是遇到LZ的情况, 应该如下定义一个线程函数, WINAPI 就是调用约定。

DWORD WINAPI ThreadProc(
__in LPVOID lpParameter
);
mosaic 2009-03-21
  • 打赏
  • 举报
回复
线程函数ProcessFile的的类型有问题,按照提示修改即可。
lzr4304061988012 2009-03-21
  • 打赏
  • 举报
回复

UINT WINAPI ProcessFile(LPVOID lParam);
kunjyo 2009-03-21
  • 打赏
  • 举报
回复
最好不要使用CreateThread,使用_beginthreadex
oyljerry 2009-03-21
  • 打赏
  • 举报
回复
ProcessFile作为线程函数需要定义为 unsigned long ProcessFile( LPVOID param)

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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