我有一个简单的任务:如何在Delphi中使用.Net程序集而不注册到GAC或COM中?
是有可能写出一个Delphi DLL,并把.NET程序集(用4种方法和一个类实现该接口只有一个接口),除了它并从德尔福DLL调用它?
我的意思是,如果我为tlb创建一个tlb和一个delphi单元,而无需注册Assembly/tlb,我可以直接从.Net程序集(相对文件名)中导入.Net类型吗?
最好, thalm
EDIT(我发现):
大多数解决方案必须至少注册一个DLL/TLB的COM。但我发现,最有前途的事情是: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: 它真的有用!你甚至可以控制类型编组,不可信!
不错的破解发现+1。它几乎立即有意义,一旦记住.Net标头只是COFF格式的扩展。我有一个伟大的文章与.Net位置的细节,但现在找不到它。这可能是更好的(而不是更简单的)方法:http://www.codeproject.com/KB/cs/unmanagedtomanaged.aspx – user44298 2011-01-10 15:58:22