C#导出dll函数

本文介绍C#导出dll函数,在C++中我们能够通过LoadLibrary,GetProcAddress 来动态调用 dll函数,在C#导出也能够用这样的方式。
首页 新闻资讯 行业资讯 C#导出dll函数

C#导出dll函数

在 C++ 中我们能够通过 LoadLibrary, GetProcAddress 来动态调用 dll函数。

在C#导出也能够用这样的方式吗?

在 DotNet 2.0 里面这样是可以的, 这完全得益于 2.0新增的一个函数Marshal.GetDelegateForFunctionPointer 方法,此方法在 .NET Framework 2.0 版中是新增的。将非托管函数指针转换为委托。

实例代码如下:

复制

publicdelegateintMsgBox(inthwnd,stringmsg,stringcpp,intok);  [DllImport("Kernel32")]  publicstaticexternintGetProcAddress(inthandle,Stringfuncname);  [DllImport("Kernel32")]  publicstaticexternintLoadLibrary(Stringfuncname);  [DllImport("Kernel32")]  publicstaticexternintFreeLibrary(inthandle);  privatestaticDelegateGetAddress(intdllModule,stringfunctionname,Typet)  {  intaddr=GetProcAddress(dllModule,functionname);  if(addr==0)  returnnull;  else  returnMarshal.GetDelegateForFunctionPointer(newIntPtr(addr),t);  }  privatevoidbutton1_Click(objectsender,EventArgse)  {  inthuser32=0;  huser32=LoadLibrary("user32.dll");  MsgBoxmymsg=(MsgBox)GetAddress(huser32,"MessageBoxA",typeof(MsgBox));  mymsg(this.Handle.ToInt32(),txtmsg.Text,txttitle.Text,64);  FreeLibrary(huser32);  }
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

  • 8.

  • 9.

  • 10.

  • 11.

  • 12.

  • 13.

  • 14.

  • 15.

  • 16.

  • 17.

  • 18.

  • 19.

  • 20.

  • 21.

  • 22.

  • 23.

以上介绍C#导出dll函数。

【编辑推荐】

  1. C#在应用程序间发送消息实现浅析

  2. 一些C#时间类型的入门知识

  3. C#接口和抽象类技术特点浅析

  4. 一个C#时间计算的实例

  5. C#继承知识详解

12    2009-07-31 14:54:48    dll函数 C#导出