tha*_*alm 15 .net delphi dll interop native
我有一个简单的任务:
有没有可能写一个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;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑2:它确实有效!你甚至可以控制编组类型,不可信!
一点建议:您不必公开出口.
您的类已经是内部的,因此从其他程序集中使用时它不会显示.
但是,将导出添加到现有静态类也是完全正常的,但将其声明为私有,以便在从.Net使用时不会显示.(非托管出口往往看起来有点令人毛骨悚然)