Accéder directement à un API Managed
Si un client non géré est écrit dans C++, il peut être compilé avec le Visual Studio .NET compilateur C++ comme « mode mixte image." Après cela, le client non géré peut accéder directement à toute API gérée. Cependant, certaines règles de codage s'appliquent à accédant aux objets gérés à partir du code non géré ; consultez la documentation C++ pour plus de détails.
L'accès direct est l'option préférée car il ne nécessite aucune considération spéciale de la part des développeurs gérés API . Ils peuvent concevoir leur API gérée conformément aux directives de conception API ( ) et être en sachant que l'API sera toujours accessible aux appelants non gérés.
une API Managed Révéler comme une API COM
Chaque classe managée public peut être exposé aux clients non gérés par COM Interop. Ce processus est très facile à mettre en œuvre, car la couche COM interop prend soin de tous les plomberie COM . Ainsi, par exemple, chaque classe gérée semble implémenter IUnknown, IDispatch, ISupportErrorInfo et quelques autres interfaces COM standard .
Malgré le fait que l'exposition des API gérées comme API COM est facile, gérée et les modèles d'objet COM sont très différents. Par conséquent, l'exposition de l'API gérée à COM doit toujours être une décision de conception explicite . Certaines fonctionnalités disponibles dans le monde géré n'ont pas d'équivalent dans le monde COM et ne seront pas utilisables depuis les clients COM. En raison de cela, il existe souvent une tension entre des directives de conception d'API gérées (DG) et la compatibilité avec COM.
Si les clients COM sont importants, écrivez votre API gérée selon les directives de conception API gérées et ensuite écrire une mince enveloppe COM convivial géré autour de votre API géré seront exposés à COM.
une API Managed Révéler comme API Flat
ne peuvent pas utiliser COM clients parfois non gérés. Par exemple, ils peuvent déjà être écrits pour utiliser des API plates et ne peuvent pas être modifiés ou recompilés. C++ est le seul langage de haut niveau qui permet vous d'exposer les API managées comme API plates. Cela n'est pas aussi simple que d'exposer une API gérée en tant qu'AP API COM. C'est une technique très avancée qui nécessite une connaissance avancée de C++ interop et les différences entre les gérés et les mondes non gérés.
Exposez votre API managée en tant qu'API plate uniquement si cela est absolument nécessaire. Si vous avez n'avez pas le choix, assurez-vous de vérifier la documentation C++ et soyez pleinement conscient de toutes les limitations.
double possible de [Comment exporter c méthodes de #?] (Http://stackoverflow.com/questions/2082159/how-to-export-c-methods) –