从Delphi调用.NET DLL

时间:2015-08-06 11:08:55

标签: c# .net delphi dll unmanaged

作为我第一次作为学生员工编程时,我必须在C#.NET中创建一个可以从Delphi调用的DLL。

由于Delphi是本机代码并且.NET正在被管理,我读到这并不容易。

我还读过Robert Giesecke的'Unmanaged Exports'。这可能是解决方案吗?

由于我的机器上没有Delphi(Delphi不是免费的),我无法自己测试。

另外,当我实现Unmanaged Exports时,我的数据类型是否会出现问题?

最后但并非最不重要的是,是否有一种语言我可以使用与Delphi相同的加载DLL的问题?能够测试对我来说很好。

3 个答案:

答案 0 :(得分:5)

UnmanagedExports是一个选项。它确实很有效。其他选项包括:

  • 使用COM公开功能。
  • 通过C ++ / CLI混合模式程序集公开功能。
  • 从您的Delphi代码托管CLR。

最后的选择不是很容易处理。不要试图这样做。

除非您已经是该领域的专家,否则您几乎肯定会遇到互操作数据类型的问题。

你当然可以用FreePascal来测试它。很可能你可以用FreePascal编写代码来消耗你的.net程序集,然后在Delphi中使用完全相同的代码。即使您必须稍微改变一下,您将学到的课程也将完全相同。

答案 1 :(得分:3)

您可以将.Net DLL视为Com可见。检查this link

Delphi可以毫无问题地加载Com对象。理论上,我没有特定的代码示例,但您可以尝试不同的教程,它们实际上解释相同。

我不知道数据类型,但COM总是试图转换为基类型(double,float to decimal,number to integer,以及复杂对象到动态对象)。

答案 2 :(得分:0)

您可以在http://dotnetruntimelibraryfordelphi.sourceforge.net/

中使用.Net Runtime Library for Delphi

运行时库允许您托管和访问.net库类型。