使用stdcall创建可以在Delphi应用程序中导入的C#DLL - 可能?

Dav*_*ave 10 c# delphi delphi-2007 stdcall

我有一个程序,我需要创建一个DLL,希望在C#中.该程序是用Delphi编写的,我有一个代码的接口文件.该接口使用stdcall调用约定.

是否可以创建符合接口的C#DLL并可以在Delphi应用程序中使用?

是否有一些示例代码演示如何将C#DLL编码为stdcall接口方法?

Cob*_*ger 7

这在纯C#中是不可能的,但是这篇文章展示了如何将非托管导出表添加到C#库,然后可以使用任何其他语言.请注意,大量的闪电战参考不应该让你失望 - 它们与作者自己的背景有关,与基本概念及其运作方式无关.

Brian Long的一篇会议论文中还有一节.尽管C#没有这样做,但Delphi.Net实际上支持非托管导出,这让你觉得有点讽刺.我不知道Delphi Prism是否也是如此.


ska*_*adt 6

我之前一直在这条路上.我选择的解决方案是创建一个新的 C#程序集(我后来将其移植到Prism),它通过com interop暴露了我需要达到的功能.我发现通过黑色拳击API调用更简单的东西,我能够减少我必须处理跨越互操作屏障的类的数量.

我确实看过Hydra,但是对于我试图做的事情来说太过分了......这是访问第三方SDK,它在.net程序集中呈现以处理数据.如果您正在考虑在您的应用程序中嵌入功能(gui对象,等等),那么您应该考虑Hydra.

我确实使用Managed.VCL作为系统的早期版本,但后来放弃了Prism/C#com互操作方法,它更易于部署,更稳定.