如何在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类型吗? 最好, 编辑(我发现): 大多数解决方案必须为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使用时不显示. (非管理出口往往看起来有点令人毛骨悚然) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |