C# 和 Delphi 集成

Posted

技术标签:

【中文标题】C# 和 Delphi 集成【英文标题】:C# and Delphi integration 【发布时间】:2012-03-23 19:48:38 【问题描述】:

目前我们有几个用 Delphi 6 编写的项目。由于这些项目中使用了特定的组件(这些组件也是用 Delphi 6 编写的),因此在较新的版本中转换并不容易。

由于我更喜欢​​ .NET 开发并且我们的新产品是在 .NET 中开发的,因此我想使用这些技术开发新功能。 C# 将成为编程语言。

我的问题是:如何将用 C# 开发的新功能与 Delphi 中的当前代码集成?这是个好主意吗?可能会出现什么问题?如果有人有类似的经历,那将是听到优点和缺点。

我听说用 C# 开发 .dll 并从 Delphi 代码中使用它的集成方式。

提前TnX!

内曼加

【问题讨论】:

主要选项是通过带有 p/invoke 的 DLL 公开您的 Delphi 代码,或者通过 COM 公开它。 【参考方案1】:

您可以同时使用 COM (ActiveX)。

所以是的,您可以在 C# 中创建一个 DLL 并将其标记为 COM 可见,然后将其导入 Delphi。

但是您不能以这种方式使用简单的(不是 COM)DLL。

【讨论】:

【参考方案2】:

我的第一个停靠点可能是研究 WCF(用 C# 编写)并让 Delphi 与之对话。

dll 不是一个坏主意,但我只是认为将它放在 WCF 中更具可扩展性和可移植性。

【讨论】:

+1,为什么投反对票?无论如何,大型应用程序通常迟早会包含一个服务/通信层。 你有WCF和Delphi 6,7通信的经验吗?你能提供一些例子吗?【参考方案3】:

COM 可能是我的选择。但是,如果出于某种原因您想避免使用 COM,您可以看看 Robert Giesecke 非常漂亮的 Unmanaged Exports。

非托管导出是一项 MSBuild 任务,它实质上允许您从 .Net 程序集中导出静态函数,以作为普通的本机 DLL 导出使用。

【讨论】:

【参考方案4】:

您可能想从 RemObjects 中查看 Hydra。它允许在同一个应用程序中使用本机代码和托管代码。

http://www.remobjects.com/hydra/default.aspx

【讨论】:

但它是否允许在常规 Delphi 应用程序中使用 .Net 代码? 是的,它使 .Net 程序集能够在 Delphi 应用程序中使用

以上是关于C# 和 Delphi 集成的主要内容,如果未能解决你的问题,请参考以下文章

C#调用delphi记录结构体问题

如何在 C# 中制作类似 Delphi 的框架?

从 C# 代码调用 delphi DLL 函数

将非托管 dll 的 Delphi 代码转换为 C#

Delphi写的DLL回调C#

Delphi 和 C# 之父,TypeScript 之父安德斯·海尔斯伯格本月抵京,快约