我试图包装由 SDL2 定义的这个函数。
它的签名是
void SDL_AddEventWatch(SDL_EventFilter filter, void* userdata)
SDL_EventFilter
在哪里
typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event);
因此,我已经像这样定义了我的包装器:
public delegate int EventFilter(IntPtr userData, IntPtr type);
[DllImport("SDL2.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "SDL_AddEventWatch")]
public static extern void AddEventWatch(EventFilter filter, IntPtr userData);
我正在像这样测试它:
SDL.AddEventWatch((data, e) =>
{
return 0;
}, IntPtr.Zero);
当我运行我的程序时,它实际上进入了 lambda 函数,但是一旦它退出函数就会立即崩溃(“vshost32.exe 已停止工作”)。
什么可能导致崩溃?