多线程问题cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *
来源:互联网 发布:mac pro 2016 尺寸 编辑:程序博客网 时间:2024/06/06 02:06
问题:
用VC创建新线程易出的问题error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)(void *)'
解决方案:
(1)如果线程要执行的是类的成员函数,则必须用static声明为静态函数
如:
class echo
{
static DWORD WINAPI ThreadFunc(LPVOID pvoid)
......
......
}
(2)一般都是调用全局函数.
我们在用CreateThread(NULL,0,ThreadProc,NULL,0,NULL)创建线程得时候,此函数中需要新线程中的函数地 址,我们常用的有两种方法解决:
一.将我们要调用的新线程函数声明成DWORD WINAPI ThreadProc(lpvoid lpParameter)。
二.我们可以将新线程函数声明成类中的成员函数:static DWORD WINAPI ThreadProc(lpvoid lpParameter)
但是当我们的写法不正确的时候,往往会出现error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)(void *)' 这个问题,另我们这些初学者很是恼火,现将可能出现的这种情况列举如下:
第一种方法的使用是将新线程要处理的函数写在类外的一种的情况也就是全局函数,非类成员函数,需要注意的就是在创建新线程之前要声明该函数或定义函数,要 注意这时不要在该类的头文件添加该函数的声明(我就犯过这样的错误)。记住用完要释放哦!
第二种方法的使用是将新线程中要处理的函数定义成本类中的成员,使用时要注意一定要吧该函数声明成static类型的,否则就会报错error C2664。
- 多线程问题cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *
- 多线程问题cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *
- error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)(void *)'
- cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *
- CreateThread 函数常见错误 cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *
- cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *
- 用VC创建新线程易出的问题error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall
- CreateThread 函数常见错误 cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__st
- CreateThread 函数常见错误 cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long...
- error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned
- (菜鸟级别)解决用VC创建新线程易出的问题error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (_
- 调用创建线程函数时出现'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned lo
- error C2440: 'initializing' : cannot convert from 'unsigned long' to 'void *
- _stdcall的说明及error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' t
- parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)VC以类的成员函数作为线程调用函数时易出错问题解决办法
- error C2664: 'CWnd::FromHandle' : cannot convert parameter 1 from 'unsigned long' to 'HWND'
- typedef unsigned long (__stdcall *THREADFUNC)(void *)
- convert unsigned long to char*
- 你目前使用的LoadRunner版本调查
- struts2的Action传参总结
- dedecms获得某篇文章内容的几种方法
- 网站中痕迹保留的实现
- gprs 自动拨号 wince ppc
- 多线程问题cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *
- java Socket编程(二)
- overload和override的区别
- 可通过 @font-face 使用
- C++ 第十三周报告1
- 设计模式学习
- Python操作Word、EXCEL,ACCESS
- C++ 第十三周报告2
- C++ 第十四周报告1--《用递归的方法求和 》