Click here to Skip to main content
15,885,216 members
Articles / Programming Languages / C#
Tip/Trick

Use "dynamic" to make PInvoke simple

Rate me:
Please Sign up or sign in to vote.
4.50/5 (2 votes)
24 Apr 2010CPOL 16.4K   3   1
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<int>(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<int>(rgbSurfacePtr, ref rect, 0);

Sdl.SDL_Event evt;
while (sdl.SDL_WaitEvent(out evt) != 0)
{
   if (evt.type == Sdl.SDL_QUIT)
   {
       break;
   }
} 

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
China China
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralGood! Pin
Shawn-USA2-May-13 19:14
Shawn-USA2-May-13 19:14 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.