加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 03:33:53 所属栏目:大数据 来源:网络整理
导读:我有一个简单的任务: 是否可以编写一个Delphi DLL,并放置一个.Net程序集(只有一个接口有4个方法和一个类实现接口),并从Delphi DLL中调用它? 我的意思是,如果我为tlb创建一个tlb和一个delphi单元,而不注册Assembly / tlb,我可以直接从.Net汇编(相对文件名)
我有一个简单的任务:

是否可以编写一个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使用时不显示. (非管理出口往往看起来有点令人毛骨悚然)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读