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);
プログラムを実行すると、実際にはラムダ関数に入りますが、関数を終了するとすぐにクラッシュします (「vshost32.exe が動作を停止しました」)。
クラッシュの原因は何ですか?