在Win32应用程序中使用CreateThread()创建线程时,出现此错误。
在CreateThread(NULL,0,pSample-> Resize(),NULL,0,NULL)中;它显示函数调用中的错误。

我确实有几个文件:

Main.cpp

WinMain()
 {
   //Create sample
    return Win32Appliaction::Run(&sample);
  }

Win32Application.cpp
int Win32Application::Run(DXSample* pSample)
  {
     //Create Window
     pSample->Init();
     pSample->Render();
     CreateThread(NULL,0,pSample->Resize,NULL,0,NULL);//error occurs
     pSample->Destroy();
  }

DXSample.h
class DXSample
   {
     public:
           virtual void Init() =0; //and rest all functions
   };

HelloTexture.h
 class HelloTexture:public DXSample
   {
       public :
             virtual void Init();//all other functions similarly
    }

HelloTexture.cpp
void Hellotexture::Init()
 { //code
  }
 void Hellotexture::Resize()
 {
    //code
  }

最佳答案

CreateThread的参数#2必须是指向与ThreadProc签名匹配的函数的指针。您不能传递pSample-> Resize()的结果(无效)或指向Resize函数本身的指针(因为这是一个非静态的类成员函数)。另外,您可能要使用:: std::thread而不是直接调用WinApi。

08-28 11:28