2012-03-06 8 views
2

現在、我々はDelphi 6で書かれたカップルプロジェクトを持っています。これらのプロジェクトで使用する特定のコンポーネント(Delphi 6でも書かれているコンポーネント)のため、新しいバージョンに変換するのは容易ではありません。C#とDelphiの統合

.NET開発が好きで、私たちの新製品は.NETで開発されているので、これらの技術を使って新しい機能を開発したいと思います。 C#はプログラミング言語になります。

私の質問は、C#で開発された新しい機能をDelphiの現在のコードと統合する方法ですか?この良いアイデアはまったくあり、何が問題になる可能性がありますか?誰かが似たような経験をしていれば、長所と短所を聞くことになります。

私はC#で.dllを開発し、Delphiコードから使用する方法については、統合のために聞いたことがあります。

TnXを事前に入力してください。コールの

ネマニャ

+2

主なオプションは、p/invokeを使用してDelphiコードをDLLに公開するか、またはCOM経由で公開します。 –

答えて

6

両方の方法でCOM(ActiveX)を使用できます。

だから、C#でDLLを作成し、それをCOMで表示してDelphiにインポートすることができます。

しかし、このように単純な(COMではない)DLLを使用することはできません。

2

私の最初のポートは、おそらくWCFに探して(C#で書かれた)と、それにDelphiの話を持っていることになります。

dllは悪い考えではありませんが、私はそれをWCFに入れたほうがスケーラビリティと移植性が高いと思っています。

+1

+1、なぜdownvotes?大規模なアプリケーションでは、通常、遅かれ早かれ、サービス/通信レイヤーが含まれます。 – mjn

+0

WCFとDelphi 6,7の通信で何か経験がありますか?いくつかの例を挙げることができますか? – Sasha

1

RemObjectsからHydraをチェックアウトすることができます。ネイティブコードとマネージコードを同じアプリケーションで使用することができます。

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

+0

しかし、通常のDelphiアプリケーションの.NETコードを使用することはできますか? – mjn

+0

はい、.NETアセンブリをDelphiアプリケーションで使用できるようにします –

2

COMは、おそらく私の選択になります。しかし何らかの理由でCOMを避けたければ、Robert Gieseckeの非常に気の利いたUnmanaged Exportsを見てください。

アンマネージドエクスポートは、基本的に.NETアセンブリの静的関数をエクスポートして、通常のネイティブDLLエクスポートとして使用できるようにするMSBuildタスクです。