2

我在 Delphi 中创建了一个能够从 dll 加载插件的应用程序。dll 导出一个看起来像这样的函数

function GetPlugin: IPluginInterface;

IPluginInterface 是一个 ActiveX 类型库。我想是因为我使用的是类型库,然后我可以使用 C# 或任何其他语言从 dll 导出 IPluginInterface,但经过一番谷歌搜索后我发现情况并非如此,因为有很多关于托管和非托管的讨论代码和无法执行此操作的原因。所以我的问题是,我是否仍然能够在 C# 中创建一个可以导出上述函数的插件?如果不是,除了 C++,还有哪些语言能够做到这一点?

4

1 回答 1

5

所以我的问题是,我是否仍然能够在 C# 中创建一个可以导出上述函数的插件?如果不是,除了 C++,还有哪些语言能够做到这一点?

Windows 上的所有主流编程环境都可以生产和使用 COM 接口。C、C++、C#、VB6、VB.net、Delphi 等。所以,是的,您可以使用 COM 接口来完成您的任务。

作为一个细节点,你不能做的是从 Delphi DLL 中传递一个接口作为函数的返回值。那是因为Delphi 对函数返回值使用了非标准语义。相反,您需要通过 out 参数返回它。

所以你需要这样写GetPlugin

procedure GetPlugin(out Plugin: IPluginInterface); stdcall;
于 2013-02-24T13:56:29.710 回答