从Dll导出接口。 C#Delphi VB C ++等

时间:2013-02-24 13:48:15

标签: c# delphi winapi dll

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

function GetPlugin: IPluginInterface;

IPluginInterface是一个ActiveX类型库。我想因为我正在使用一个类型库我可以使用C#或任何其他语言从dll导出IPluginInterface,虽然经过一些谷歌搜索我发现这不是这种情况,因为有很多关于托管和非托管的讨论代码和原因为什么不能这样做。所以我的问题是,我是否仍然能够在C#中创建一个将导出上述函数的插件?如果没有,除C ++外,哪些语言能够做到这一点?

1 个答案:

答案 0 :(得分:5)

  

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

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

作为一个细节,你不能做的是从Delphi DLL中传递一个接口作为函数的返回值。那是因为Delphi uses non-standard semantics for function return values。相反,您需要通过out参数返回它。

所以你需要像这样写GetPlugin

procedure GetPlugin(out Plugin: IPluginInterface); stdcall;