hur.cn - 华软网

 热门搜索

_beginthreadex 编译问题

  作者:未知    来源:网络    更新时间:2011/5/27
C++">public:
unsigned int __stdcall Daoru(void*); //头文件里生命


unsigned int __stdcall CMyAppx::Daoru(void*) //.cpp文件定义
{
    ...........
    return;
}

void CMyAppx::OnBnClickedDaoru()  //点击按钮,创建线程
{
HANDLE hDaoru=(HANDLE)_beginthreadex(NULL,0,(unsigned int (__stdcall *)(void*))(CMyAppx::Daoru),NULL,0,NULL,);   //_beginthreadex 第3个参数编译不通过,头大啊
WaitForSingleObject(hDaoru,INFINITE);
CloseHandle(hDaoru);
return;
}


编译的时候提示:  
>.\CMyAppx.cpp(99) : error C2440: “类型转换”: 无法从“overloaded-function”转换为“unsigned int (__stdcall *)(void *)”
1>        在匹配目标类型的范围内没有具有该名称的函数

不知道哪里出问题,百度了好几个小时,都说第3个参数直接写函数名就行了,不过都是在VC6里的写法,我用的是VS2008,求大侠们帮改改.
---华软 网友回答---
static unsigned int __stdcall Daoru(void*); //头文件里生命
---华软网友回复---
对了,程序用的是MFC
---华软网友回复---
引用 1 楼 zz_lgy 的回复:
static unsigned int __stdcall Daoru(void*); //头文件里生命


解决,声明为什么要加static呢      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。