虽然我也觉得没有错,……那两个类型怎么看都一样的啊
你要不要在 SmThread 前面加一个 & 符号看看?像这样
hThread = CreateThread(NULL,0, (LPTHREAD_START_ROUTINE)&SmThread,(LPVOID)this,0,NULL);
不要问我为什么因为我也不知道,我只是觉得如果这样做的话有可能就可以编译通过了,“可能”
或者把强制转换关掉,
hThread = CreateThread(NULL,0, SmThread,(LPVOID)this,0,NULL);
另:如果你用的是c++,然后SmThread是一个成员函数,并且还不是静态成员函数的话,那么编译不过去是正常的:因为不可以把非静态成员函数给送进去的
补充一个:看了你下面的追问,
CreateThread”: 不能将参数 3 从“DWORD (__stdcall *)(void)”转换为“LPTHREAD_START_ROUTINE
那啥,为什么是 void,LPVOID是void*不是void啊……注意星号
请如下定义函数
DWORD WINAPI SmThread ( LPVOID lpParam ){}
1、CreateThread
2、beginthread
3、beginthreadex
你搜索一下MSDN文档,把线程的函数声明复制过来
第三个参数直接传 SmThread 就可以,不用转换