如何使用RegAsm调用C#Dll方法?

时间:2019-02-25 10:45:08

标签: c# methods dll registration regasm

我创建了一个使用“ Register for com interop”的C#Dll,并设法使用RegAsm对其进行了注册:

RegAsm.exe -tlb -codebase MathLib.dll

那之后我得到消息:

“程序集已导出到'C:\ Test \ MathLib.tlb',并且类型库已成功注册”

我现在如何调用Dll中的方法?例如,它具有公共功能:

int Add(int a, int b) { return a + b; }

将两个数字相加并返回结果。如何从命令行调用它并查看操作结果?

非常感谢。

1 个答案:

答案 0 :(得分:-1)

  

它如何工作?

     

创建一个新的图书馆或继续学习   现有的。然后添加UnmanagedExports Nuget程序包。

     

这几乎是所有必需的设置。

     

现在您可以编写任何类型的静态方法,并用   [DllExport]并从本机代码中使用它。就像DllImport一样,   因此您可以使用以下命令自定义参数/结果的编组   MarshalAsAttribute。

     

在编译期间,我的任务将修改IL以添加所需的   出口。

一个很好的例子是以下几行:

class Test
{
  [DllExport("Add", CallingConvention = CallingConvention.Cdecl)]
  public static int Add(int a, int b)
  {
     return a + b;
  } 
}

如您所知,请继续在RegAsm中注册您的库。要将COM函数重新导入到另一个项目中,应将其像本机方法一样编组,并在代码中使用[DLLImport]属性进行声明。

参考文献:

Unmanaged Exports

UnmanagedExports Nuget package

我希望能有所帮助。