1

我的主要应用程序在 C# 中,并引用另一个 .NET DLL 声明IPluginIPluginHost. 我现在需要将此 DLL 导入到 Delphi 项目中,以便为主应用程序制作插件。我听说这是可能的,但是关于导入类(我不想要)或在 .NET 中运行 Delphi 代码有很多

在谁能澄清之前有没有人这样做过?

4

2 回答 2

3

直接在 Delphi 中实现 .NET 接口将非常困难(我什至不确定是否可能)。但是,根据您想把手弄脏的程度,您可以使用一些选项。

1) 您可以在 Delphi 中创建一个 ActiveX DLL,然后将该库导入 .NET。然后,您可以在 C# 中创建一个实现接口的代理类,并将调用路由到 Delphi ActiveX DLL。

2) 您可以在 Delphi 中创建一个本地 windows DLL,然后在 .NET 中编写接口。然后,您可以在 C# 中创建一个实现接口的代理类,并将调用路由到 Delphi DLL。

3) 您可以使用像 Hydra (http://www.remobjects.com/hydra/) 这样支持 .NET 和 Delphi 的插件框架。

在所有这些情况下,您应该小心处理 32/64 位情况,因为 .NET 代码能够在这两种情况下运行,但 Delphi 代码需要为每个环境独立编译。

根据您的情况,另一种选择可能是以对象 pascal 的形式编写 Delphi 代码,该代码将生成称为 Oxygene (http://www.remobjects.com/oxygene/) 的 .NET 字节代码。

编辑:如果您尝试创建用于 .NET 插件框架的 Delphi 插件,最好执行以下操作:

在 Delphi 中创建一个与您的 IPlugIn 和 IPlugInHost 接口匹配的新接口。然后,您可以构建一个 .NET Delphi 插件包装器,其中包含一些配置信息来指定要加载的 Delphi 插件。然后,这个 .NET 包装器将加载 Delphi DLL 并根据需要调用 DLL 方法。视觉的东西需要某种 ActiveX 包装器,但你应该能够很好地使用非视觉的东西。

于 2012-10-09T18:32:16.910 回答
2

最简单的方法是为 delphi 提供一个 .NET 到 COM 包装器 dll。我发现这是迄今为止与 .NET 交互最轻松的方式。

于 2012-10-09T21:01:21.640 回答