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

问题描述 投票:0回答:1

我创建了一个使用“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; }

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

非常感谢。

c# methods dll registration regasm
1个回答
-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注册您的lib。要将COM函数重新导入另一个项目,您应该将其作为本机方法进行传输,并使用[DLLImport]属性在代码中声明它。

参考文献:

Unmanaged Exports

UnmanagedExports Nuget package

我希望在某种程度上有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.