Use "dynamic" to make PInvoke simple
Introduction...
Introduction
Use the "dynamic" key word in C# 4.0 to make PInvoke simple.
The method is introduced by Miguel de Icaza in his web blog, in the article "C#'s Dynamic in Mono". and zhongzf has some changes, added support with "return value" and "ref, out parameter".
All the source code is check in on http://code.google.com/p/dynamicdllimport/
Using the code
dynamic user32 = new DynamicDllImport("user32.dll", callingConvention : CallingConvention.Winapi); user32.MessageBox(0, "Hello World", "Platform Invoke Sample", 0);with return value.
dynamic asmproject = new DynamicDllImport("asmproject.dll"); int value = asmproject.addwith ref, out parameter.(3, 4); Console.WriteLine(value);
dynamic sdl = new DynamicDllImport("SDL.dll", CharSet.Ansi); Sdl.SDL_Rect rect = new Sdl.SDL_Rect( 0, 0, (short)width, (short)height); int result = sdl.SDL_FillRect(rgbSurfacePtr, ref rect, 0); Sdl.SDL_Event evt; while (sdl.SDL_WaitEvent(out evt) != 0) { if (evt.type == Sdl.SDL_QUIT) { break; } }