今天来回顾下P/Invoke中的各种细节,加深下理解和记忆。
概念
P/Invoke,全名Platform Invocation Services,是.NET框架中的一个特性。允许托管代码(比如C#,VB等.NET语言编写的代码)调用非托管的DLL函数,包括Win32 API库和其它我们自己编写的C/C++动态链接库中的函数。
P/Invoke的名字就来自“Platform Invocation”,意思是调用平台函数,通常是调用C/C++的本地函数库。
在C#中,我们使用[DllImport]特性来导入DLL,然后声明对应的静态方法就可以使用了。例如调用windows api中的一个函数MessageBox,我们可以这样声明:
1 | [ ] |
然后我们就可以像普通C#函数一样来使用MessageBox了:
1 | MessageBox(new IntPtr(0), "Hello World!", "Hello Dialog", 0); |