从 Delphi 调用 .NET DLL
Call .NET DLL from Delphi
这是我第一次作为学生员工编程,我必须在 C#.NET 中创建一个 DLL,它可以从 Delphi 调用。
我读到这并不容易,因为 Delphi 是本机代码并且 .NET 被管理。
我还从 Robert Giesecke 那里了解到 'Unmanaged Exports'。这可能是解决方案吗?
因为我的机器上没有 Delphi(Delphi 不是免费的),我无法自己测试。
此外,当我实施非托管导出时,我的数据类型会不会有问题?
最后但并非最不重要的一点是,有没有一种我可以使用的语言在加载 DLL 时会遇到与 Delphi 相同的问题?能测试一下就好了
UnmanagedExports 是一种选择。它当然工作得很好。其他选项包括:
- 使用 COM 公开功能。
- 通过 C++/CLI 混合模式程序集公开功能。
- 从您的 Delphi 代码托管 CLR。
最后一个选项不是很容易处理。不要试图那样做。
除非您已经是该领域的专家,否则您几乎肯定会遇到互操作数据类型的问题。
您当然可以使用 FreePascal 对此进行测试。很可能您可以在 FreePascal 中编写使用您的 .net 程序集的代码,然后在 Delphi 中使用完全相同的代码。即使您必须对其进行一些更改,您将学到的课程也将完全相同。
您可以使您的 .Net DLL 作为 Com 可见。检查 this link.
Delphi 可以毫无问题地加载 Com 对象。这在理论上,我没有具体的代码示例,但您可以尝试使用不同的教程,它们实际上解释了相同的内容。
我不知道数据类型,但 COM 总是尝试转换为基本类型(双精度、浮点数到十进制、数字到整数以及复杂对象到动态对象)。
您可以在 http://dotnetruntimelibraryfordelphi.sourceforge.net/
中使用 Delphi 的 .Net 运行时库
运行时库允许您托管和访问 .net 库类型。
这是我第一次作为学生员工编程,我必须在 C#.NET 中创建一个 DLL,它可以从 Delphi 调用。
我读到这并不容易,因为 Delphi 是本机代码并且 .NET 被管理。
我还从 Robert Giesecke 那里了解到 'Unmanaged Exports'。这可能是解决方案吗?
因为我的机器上没有 Delphi(Delphi 不是免费的),我无法自己测试。
此外,当我实施非托管导出时,我的数据类型会不会有问题?
最后但并非最不重要的一点是,有没有一种我可以使用的语言在加载 DLL 时会遇到与 Delphi 相同的问题?能测试一下就好了
UnmanagedExports 是一种选择。它当然工作得很好。其他选项包括:
- 使用 COM 公开功能。
- 通过 C++/CLI 混合模式程序集公开功能。
- 从您的 Delphi 代码托管 CLR。
最后一个选项不是很容易处理。不要试图那样做。
除非您已经是该领域的专家,否则您几乎肯定会遇到互操作数据类型的问题。
您当然可以使用 FreePascal 对此进行测试。很可能您可以在 FreePascal 中编写使用您的 .net 程序集的代码,然后在 Delphi 中使用完全相同的代码。即使您必须对其进行一些更改,您将学到的课程也将完全相同。
您可以使您的 .Net DLL 作为 Com 可见。检查 this link.
Delphi 可以毫无问题地加载 Com 对象。这在理论上,我没有具体的代码示例,但您可以尝试使用不同的教程,它们实际上解释了相同的内容。
我不知道数据类型,但 COM 总是尝试转换为基本类型(双精度、浮点数到十进制、数字到整数以及复杂对象到动态对象)。
您可以在 http://dotnetruntimelibraryfordelphi.sourceforge.net/
中使用 Delphi 的 .Net 运行时库运行时库允许您托管和访问 .net 库类型。