我创建了一个使用“ 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; }
将两个数字相加并返回结果。如何从命令行调用它并查看操作结果?
非常感谢。
答案 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]
属性进行声明。
参考文献:
UnmanagedExports Nuget package
我希望能有所帮助。