我将Visual Studio 2012与SDL结合使用,并且正在执行一个简单的线程任务,但始终会遇到以下错误:

argument of type "int (mainGame::*)(void *ptr)" is incompatible with parameter of type "int (__cdecl *)(void *)"


我得到的另一个错误:

error C3867: 'mainGame::gameEvents': function call missing argument list; use '&mainGame::gameEvents' to create a pointer to member


该函数的编写方式如下:

int gameEvents(void *ptr){
   //do things here.
return 0;
}


这是我用来调用该函数的代码:

SDL_Thread* gh;
 gh = SDL_CreateThread(gameEvents,NULL);

最佳答案

由于您使用的是C ++,因此需要使用C链接声明函数,因为这正是SDL期望的,它本身就是一个C库:

extern "C" int gameEvents(void *ptr);

10-06 07:25