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 集成的主要内容,如果未能解决你的问题,请参考以下文章