如何在Delphi中使用.Net程序集而不在GAC或COM中注册?

前端之家收集整理的这篇文章主要介绍了如何在Delphi中使用.Net程序集而不在GAC或COM中注册?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个简单的任务:

是否可以编写一个Delphi DLL,并放置一个.Net程序集(只有一个接口有4个方法和一个类实现接口),并从Delphi DLL中调用它?

我的意思是,如果我为tlb创建一个tlb和一个delphi单元,而不注册Assembly / tlb,我可以直接从.Net汇编(相对文件名)导入.Net类型吗?

最好,
thalm

编辑(我发现):

大多数解决方案必须为COM注册至少一个dll / tlb.但是,我发现的最有希望的是:来自Robert Giesecke的Unmanaged Exports,它是一个Visual Studio项目模板,它允许您编写静态C#(或任何.Net语言)方法,并从任何非托管语言调用它们,真棒:

class Test
{
    [DllExport("add",CallingConvention = CallingConvention.StdCall)]
    public static int Add(int left,int right)
    {
        return left + right;
    } 
}

编辑2:
真的很有用!你甚至可以控制类型编组,难以置信!

解决方法

一点建议:您不必将出口公开.

您的课程已经是内部的,因此在从另一个程序集使用时不会显示.

但是,将导出添加到现有静态类也是非常好的,但将其声明为私有,以便在.Net使用时不显示. (非管理出口往往看起来有点令人毛骨悚然)

原文链接:https://www.f2er.com/delphi/102563.html

猜你在找的Delphi相关文章