2011-10-19 4 views
2

アンマネージドC++からC#関数を呼び出して値を返すことができるC++のクラスを実装する必要があります。私はこれをC++からC++にMIDL/RPCバインディングを使って行ってきましたが、今ではサーバアプリケーションがC#に移行していますが、クライアントはアンマネージドC++(エクスプローラ拡張)のままでなければなりません。C++からC#へのRPC用COMの使用#

私はさまざまな方法を見てきましたが、多くの人がCOMを提案しました.CommはIPC/RPCではなく、クライアントアプリケーションで提供されたオブジェクトをホストするためのものでした。これはCOMで可能になるでしょうか?もしそうなら、誰かが良いリファレンスや例の方向に私を向けることができますか?

EDIT:

ただ、明確にするために、クライアント(DLL)をエクスプローラのプロセス空間にロードされるように、私は、マネージコードを使用することはできません。

私が達成しようとしているのは、拡張機能がファイルに関するいくつかの詳細について実行中のサービス(セッション0)を要求するファイルを右クリックしたときです。これは以前はC++ < - > C++クライアント/サーバーのRPC経由で行われていました。今、サーバーはC#にアップグレードされましたが、私のオプションが何であるか分かりません。 COMはオプションですか?

おかげで、 J

+1

COMは、アウトプロセスまたはクロスアパートの場合には、RPC必要なときに使用します。 RPCをうまく処理する必要はありません。これが適用されるかどうかを知るためにも、あなたの質問には詳細が十分ではありません。 –

+0

さらに詳しい情報が含まれています。 – JWood

答えて

2

使用混合CLRとネイティブC++ DLL。 MSDNtoolsを確認してください。

Native and .NET Interoperability

+0

エクスプローラのプロセス空間にロードされているため、拡張機能でCLRを使用することはできません。 http://blogs.msdn.com/b/junfeng/archive/2005/11/18/494572.aspx – JWood

+0

@JWood:.NETから何を使いたいですか?自分のモジュールですか? – Naszta

+0

エクスプローラで右クリックしたときにファイルに関する情報を取得するには、実行中のC#サービスで関数を呼び出す必要があります。 WCFは名前付きパイプ経由でこれをうまく実現しますが、アンマネージC++は実行中のC#サービスでどのように関数を呼び出すことができますか? – JWood

関連する問題