2009-08-21 9 views
1

C#プロジェクト(Visual Studio 2008)への参照としてC++ COM DLLを追加します。 VSは参照を追加しますが、生成されたinteropライブラリには元のtypelib(.idl)定義の名前が反映されません。ここに私のライブラリの定義は次のようになります。Visual StudioでCOMリファレンスを追加するとInteropアセンブリのインターフェイスの名前が変更されます

ので、[ UUID(...)、 helpstring( "MYLIB") ] ライブラリーMYLIB {

[ 
    uuid(...), 
    helpstring("MyCom CoClass") 
] 
coclass MyComCoClass 
{ 
    [default] interface IMyInterface; 
    interface IMyInheritedInterface; 
    interface IMyBaseInterface; 
}; 

}

、IMyInterfaceというIMyInheritedInterfaceから継承し、IMyInheritedInterfaceはIMyBaseInterfaceから継承します。このCOMの.dllが追加されると、これらのインターフェイスをすべて使用できるようにします。上記のtypelibに対してinteropアセンブリVSが生成すると、IMyInterfaceはMyInterfaceになります。なぜ、その周りに道があるのですか?

おかげ

答えて

1

タイプライブラリのインポートインタフェースは、コクラスの既定のインターフェイスであるとするとき、それはそれだけでコクラスによって使われていることを行います。

もう一つの回避策は、あなたのtypelibに別のダミーのコクラスを追加し、それにIMyInterfaceをデフォルトのインターフェイスにすることです。

+0

優れています。ありがとうございました! –

関連する問題