gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 14:36:32 26 4
gpt4 key购买 nike

我有一个简单的任务:

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

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

最好的,塔尔姆

编辑(我发现的):

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

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

编辑2:真的行!你甚至可以控制类型编码,难以置信!!!

最佳答案

一点小建议:您不必公开您的导出。

您的类已经是内部类,因此当从另一个程序集中使用时它不会显示。

但是,向现有静态类添加导出也是完全可以的,但将其声明为私有(private),这样在从 .Net 使用时它就不会显示。 (不受管理的导出往往看起来有点令人毛骨悚然)

关于.net - 如何在Delphi中使用.Net程序集而不在GAC或COM中注册它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4642548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com