2

dll からプラグインをロードできるアプリケーションを Delphi で作成しました。dll は、次のような関数を 1 つエクスポートします。

function GetPlugin: IPluginInterface;

IPluginInterface は ActiveX タイプ ライブラリです。私はタイプ ライブラリを使用していたので、C# または他の言語を使用して dll から IPluginInterface をエクスポートできると考えましたが、少しグーグルで調べたところ、マネージとアンマネージについて多くの話があるため、これは当てはまらないことがわかりました。コードと、これを実行できない理由。私の質問は、上記のような関数をエクスポートするプラグインを C# で作成することはできますか? そうでない場合、C++ 以外にどの言語がそれを行うことができますか?

4

1 に答える 1

5

私の質問は、上記のような関数をエクスポートするプラグインを C# で作成することはできますか? そうでない場合、C++ 以外にどの言語がそれを行うことができますか?

Windows の主流のプログラミング環境はすべて、COM インターフェイスを生成および使用できます。C、C++、C#、VB6、VB.net、Delphi など。したがって、はい、タスクに COM インターフェイスを使用できます。

詳細な点として、Delphi DLL からインターフェイスを関数の戻り値として渡すことはできません。これは、Delphi が関数の戻り値に非標準のセマンティクスを使用しているためです。代わりに、out パラメータを介して返す必要があります。

GetPluginしたがって、次のように記述する必要があります。

procedure GetPlugin(out Plugin: IPluginInterface); stdcall;
于 2013-02-24T13:56:29.710 に答える