65.9K
CodeProject is changing. Read more.
Home

Use "dynamic" to make PInvoke simple

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.50/5 (2 votes)

Apr 24, 2010

CPOL
viewsIcon

16691

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.add(3, 4);
Console.WriteLine(value); 
with ref, out parameter.
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;
   }
}