2012-03-06 47 views
2

目前我們有幾個項目是用Delphi 6編寫的。由於這些項目中使用了特定的組件(組件也用Delphi 6編寫),因此將其轉換爲新版本並不容易。因爲我更喜歡.NET開發,而我們的新產品是用.NET開發的,所以我想開發使用這些技術的新功能。 C#將會是編程語言。C#和Delphi集成

我的問題是:如何將C#開發的新功能與Delphi中的當前代碼集成?這是一個好主意,有什麼可能的問題?如果有人有類似的經歷,那就是聽取優點和缺點。

我聽說過使用C#開發.dll的集成方式,並且從Delphi代碼中使用它。

TnX提前!

維迪奇

+2

主要選項通過p/invoke通過DLL暴露您的Delphi代碼,或通過COM公開它。 – 2012-03-06 10:41:27

回答

6

您可以使用COM(ActiveX)兩種方式。

所以,你可以在C#中創建一個DLL,並將其標記爲COM可見並將其導入到Delphi中。

但是你不能用這種方式使用簡單的(不是COM)DLL。

2

我的第一個停靠港很可能會尋找到WCF(C#編寫),並有德爾福與它對話。

該dll不是一個壞主意,但我只是認爲把它放在WCF是更具可擴展性+便攜性。

+1

+1,爲什麼downvotes?無論如何,大型應用程序通常遲早會包括服務/通信層。 – mjn 2012-03-07 06:22:06

+0

您有任何WCF和Delphi 6,7通信方面的經驗嗎?你能提供一些例子嗎? – Sasha 2012-06-18 20:10:26

1

您可能想要從RemObjects中檢出Hydra。它允許在同一個應用程序中使用本地代碼和託管代碼。

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

+0

但它允許從一個普通的Delphi應用程序中使用.Net代碼嗎? – mjn 2012-03-07 06:19:06

+0

是的,它可以使.Net程序集在Delphi應用程序中使用 – 2012-03-07 21:26:33

2

COM可能會是我的選擇。然而,如果由於某種原因你想避免COM,你可以看看Robert Giesecke非常漂亮的Unmanaged Exports

非託管導出是一個MSBuild任務,它基本上允許您導出靜態函數從您的.Net程序集中作爲普通的本地DLL導出來使用。