2017-01-19 19 views
1

C#サーバーからC++クライアントへのCOMイベントを処理しようとしています。私はサーバーregfreeを使用することができますが、私のイベントはもはや機能しません。COMイベントをregfreeで処理するにはどうすればよいですか?

以前は、登録によって、イベントはクライアントでIDispEventImplを介してATLから処理されました。

私はこれに直接対処する記事を見つけることができませんでしたが、IConnectionPointは本質的に登録を必要としないという提案を見ました。

私はまた、IDispEventSimpleImplがregfreeで動作するかもしれないという提案を見ました。

答えて

2

は、タイプライブラリにアクセスする必要があります。あなたはそれが活性化コンテキストにロードすることができるように、サーバーのマニフェストに参照を含める必要があります:

<file name="mydll.tlb"> 
    <typelib 
     tlbid="{TLBID}" 
     version="1.0" 
     helpdir="" 
     flags="hasdiskimage"/> 
</file> 

クライアント・シンクは、同様にタイプライブラリのIDを使用して宣言する必要があります

class CMySink: public IDispEventImpl<1, CMySink, &IID_IEvent, &TLBID, 1, 0> 

代わりに、IDispEventSimpleImplを実装することもできます。これはタイプライブラリなしで動作します。

関連する問題