2009-08-21 5 views
1

J'ajoute une DLL COM C++ comme référence à un projet C# (Visual Studio 2008). VS ajoute la référence, mais la bibliothèque interop générée ne reflète pas la dénomination dans la définition typelib (.idl) d'origine. Voici ce que ma définition de la bibliothèque ressemble à:Ajout d'une référence COM avec des interfaces de renommage de Visual Studio dans Interop Assembly

[ UUID (...), helpstring ("MyLib") ] bibliothèque MyLib {

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

}

Ainsi, IMyInterface hérite de IMyInheritedInterface qui à son tour hérite de IMyBaseInterface. Je veux que toutes ces interfaces soient disponibles lorsque le .dll de ce COM est ajouté. Dans l'assembly interop VS génère pour la typelib ci-dessus, IMyInterface devient MyInterface. Pourquoi et existe-t-il un moyen de contourner le problème?

Merci

Répondre

1

L'importateur typelib fait que lorsqu'une interface est l'interface par défaut pour un coclasse et il est utilisé par cette coclasse.

Une solution de contournement consiste à ajouter une autre coclasse factice à votre typelib et à faire de IMyInterface l'interface par défaut pour cela aussi.

+0

Excellent. Je vous remercie! –

Questions connexes