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

Meh*_*ada 2 c# delphi dll winapi

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

function GetPlugin: IPluginInterface;
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*nan 5

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

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

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

所以你需要这样写GetPlugin:

procedure GetPlugin(out Plugin: IPluginInterface); stdcall;
Run Code Online (Sandbox Code Playgroud)