线程的问题???
//a.h:
class _declspec(dllexport) X
{
public:
DWORD WINAPI y(LPVOID k);
void CreateT();
/*...*/
};
//a.cpp:
DWORD WINAPI X::y(LPVOID k)
{
::MessageBox(NULL, "xx ", "yy ",0);
};
void X::CreateT()
{
//以下三句代码放在任何另一程序里无问题,但放入类里就出现编译不通过的问题;
DWORD dwRecvThread;
HANDLE hRecvThread;
hRecvThread = CreateThread(NULL,0,dwapiRecv,this,0,&dwRecvThread);
};
/*...*/
//错误提示如下:
//error C2664:cannot convert parameter 3 from 'unsigned long (void *) ' to 'unsigned long (__stdcall *)(void *) '
//改为如下也不行:
//hRecvThread = CreateThread(NULL,0,(LPVOID)dwapiRecv,this,0,&dwRecvThread);
[解决办法]
CreateThread的第三参数必须为全局函数或类的静态函数的地址