2011-10-19 49 views
2

我需要在C++中實現一個可以從非託管C++調用C#函數的類並返回一個值。我已經完成了從C++到C++,使用命名管道上的MIDL/RPC綁定,這很好用,但現在我的服務器應用程序正在轉向C#,但客戶端必須保持非託管C++(它是一個資源管理器擴展)。使用COM從C++到C#的RPC#

我已經看過各種方法和很多人提出的COM,這是我的理解,COM是不是很多的IPC/RPC,但託管在客戶端應用程序服務的對象。這對於COM來說是可能的嗎?如果是這樣,任何人都可以指向我的一個很好的參考或示例的方向?

編輯:

只是要清楚,我不能使用託管代碼,客戶端(DLL)加載到瀏覽器的進程空間。

我想實現的是,當用戶右鍵單擊文件時,擴展會詢問正在運行的服務(會話0)以獲取關於該文件的一些詳細信息。這先前是通過RPC在C++ < - > C++客戶機/服務器上完成的。現在服務器已經升級到C#,但我不確定我的選擇是什麼。 COM是一個選項嗎?

謝謝, Ĵ

+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