IPlugin
私のメインアプリケーションはC#であり、とを宣言する別の.NETDLLを参照しますIPluginHost
。メインアプリのプラグインを作成できるように、このDLLをDelphiプロジェクトにインポートする必要があります。これは可能だと聞きましたが、クラスのインポート(私は望まない)や.NET内でのDelphiコードの実行についてはたくさんあります
誰が明確にすることができる前に誰かがこれをしましたか?
Delphi で .NET インターフェイスを直接実装するのは非常に困難です (可能かどうかさえわかりません)。ただし、手をどれだけ汚したいかによって、いくつかの選択肢があります。
1) Delphi で ActiveX DLL を作成し、このライブラリを .NET にインポートできます。次に、インターフェイスを実装するプロキシ クラスを C# で作成し、呼び出しを Delphi ActiveX DLL にルーティングするだけです。
2) Delphi でネイティブ Windows DLL を作成し、.NET でインターフェイスをコーディングできます。次に、インターフェイスを実装するプロキシ クラスを C# で作成し、呼び出しを Delphi DLL にルーティングするだけです。
3) .NET と Delphi の両方をサポートする Hydra (http://www.remobjects.com/hydra/) のようなプラグイン フレームワークを使用できます。
.NET コードは両方で実行できますが、Delphi コードは環境ごとに個別にコンパイルする必要があるため、これらのすべてのケースで、32/64 ビットの状況を慎重に処理する必要があります。
状況によっては、Oxygene (http://www.remobjects.com/oxygene/) と呼ばれる .NET バイト コードを生成するオブジェクト パスカルの形式で Delphi コードを記述することもできます。
編集: .NET プラグイン フレームワークで使用する Delphi プラグインを作成しようとしている場合は、次のようにするのが最善です。
IPlugIn および IPlugInHost インターフェイスに一致する新しいインターフェイスを Delphi で作成します。次に、ロードする Delphi プラグインを指定するための構成情報を持つ .NET Delphi プラグイン ラッパーを作成できます。次に、この .NET ラッパーは Delphi DLL をロードし、必要に応じて DLL メソッドを呼び出します。視覚的なものにはある種の ActiveX ラッパーが必要ですが、非視覚的なものは問題なく使用できるはずです。
最も簡単な方法は、Delphi 用の .NET to COM ラッパー dll を提供することです。私は、これが .NET とやり取りする最も簡単な方法であることがわかりました。