[教程]在 Delphi 中调用 .Net 的 DLL

首先,明确一点:本文提供的方法,要求 .NET 的 DLL 必需编译为支持 COM 接口的模式,这样子,它就可以让其它语言通过 IDispatch 接口进行调用。具体的教程,请自行百度。下面是网上搜到的一个截图。

生成后有 TLB 和 DLL 两种类型的文件,TLB 存贮了 DLL 中相关的接口的定义。接下来,如果我们要在 Delphi 使用这个 C# 的动态链接库,那么首先我们需要调用 .NET 的 regasm 注册这个 DLL 到系统中。regasm 这个程序的位置取决于具体的 .Net 运行时版本:

  • 2.x/3.x : %WinDir%\Microsoft.NET\Framework\v2.0.50727
  • 4.x : %WinDir%\Microsoft.NET\Framework\v4.0.30319

这个根据创建 DLL 时的 .NET 的目标环境来选择就好。假设我们使用 4.0 的 regasm。

接下来我们要在 Delphi 中调用这个 DLL 的函数来完成相应的操作。这里有好几种方式,你可以用你喜欢的方式来完成:

1、通过 OleVariant 来处理。这种处理方式是最简单的,参考示例如下:

2、选择 Components->Import Component,然后选择 Import .net assembly,然后按照向导添加要导入的 dll,最后就会生成对应的导入单元,然后就简单了,直接按照普通的 Com 创建对应的 TOleServer 类型的实例就可以了。

3、利用 LoadTypeLib 来加载获取 ITypeInfo 信息,然后再调用其 CreateInstance 接口创建实例,最终再使用 IDispatch 的 Invoke 接口实现调用。

分享到:

评论已关闭。