C# C语言中的DLL外部函数声明#

C# C语言中的DLL外部函数声明#,c#,dll,C#,Dll,我正试图从C#.NET 2.0应用程序访问kernel32.dll中的GetProcAddress函数。MSDN站点将其C原型显示为 FARPROC WINAPI GetProcAddress( __in HMODULE hModule, __in LPCSTR lpProcName ); 如何将其转换为C#?我想我已经得到了大部分: private static extern delegate GetProcAddress(IntPtr hModule, string lpPro

我正试图从C#.NET 2.0应用程序访问kernel32.dll中的
GetProcAddress
函数。MSDN站点将其C原型显示为

FARPROC WINAPI GetProcAddress(
  __in  HMODULE hModule,
  __in  LPCSTR lpProcName
);
如何将其转换为C#?我想我已经得到了大部分:

private static extern delegate GetProcAddress(IntPtr hModule, string lpProcName);

然而,我认为使用
delegate
关键字是错误的。我应该更改什么,以便可以从应用程序访问此功能?谢谢。

PInvoke.Net提供了一个很好的API示例

internal static class UnsafeNativeMethods {
   [DllImport("kernel32", CharSet=CharSet.Ansi, ExactSpelling=true, SetLastError=true)]
   internal static extern IntPtr GetProcAddress(IntPtr hModule, string procName );
}

internal delegate int DllRegisterServerInvoker();

// code snippet in a method somewhere, error checking omitted
IntPtr fptr = UnsafeNativeMethods.GetProcAddress( hModule, "DllRegisterServer" );
DllRegisterServerInvoker drs = (DllRegisterServerInvoker) Marshal.GetDelegateForFunctionPointer( fptr, typeof(DllRegisterServerInvoker) );
drs(); // call via a function pointer
文章链接


谢谢,这非常有帮助!