J'ai une bibliothèque qui exporte une routine C non managée qui renvoie des pointeurs vers des objets COM IUnknown. La DLL n'est pas enregistrée et n'est pas serveur. Je voudrais utiliser les types COM de C#.Obtention d'objets COM à partir d'un code non managé
J'ai déjà écrit des interfaces C# pour les types COM. Quel est l'équivalent C# d'appel LoadLibrary() et GetProcAddress()? Comment j'appellerais le résultat de GetProcAddress() et puis l'appel pour charger un pointeur d'interface COM?
Voici un extrait de C++ qui illustre ce que je suis après:
// Assume I have previously declared IMyType
HANDLE mylib = ::LoadLibrary("myfakecom.dll");
IUnknown* (*GetterFunc) getter;
getter = (GetterFunc)::GetProcAddress(mylib, "GetFactory");
IUnknown *unk = getter();
IMyType *mytype = unk->QueryInterface(IID_MYTYPE);
Mon intestin dit « Faites-le avec C++/CLI », bien que je ne suis pas sûr de la façon dont je le faire pour tout type générique , et comment je contraindre les pointeurs IUnknown brutes dans les types de pointeur de gestionnaire que je déclarerais en utilisant les attributs [Guid] sur une interface gérée.
Vous devriez faire une nouvelle question plutôt que d'essayer de réutiliser celle-ci pour demander un suivi. Nouvelle question signifie de nouveaux yeux. –