Question

J'ai une interface définie dans un fichier IDL que je voudrais utiliser en C #. Est-il possible de convertir le IDL à quelque chose d'utilisable en C #?

Était-ce utile?

La solution

La première consiste à exécuter MIDL sur le IDL pour créer une bibliothèque de types (.tlb). Cela nécessite un bloc library dans le IDL. Une fois que vous avez le .tlb, vous pouvez exécuter tlbimp.exe sur elle pour obtenir une définition C # / Interop DLL.

Autres conseils

Qu'est-ce que les types de données / structures sont utilisées dans le IDL? Vous devez d'abord définir les types de données en C # d'abord s'il n'y a pas de type inbuild déjà.

Vous pouvez utiliser l'outil suivant pour convertir les structures, mais vous devez vérifier la ouput manuellement.

Télécharger: http : //download.microsoft.com/download/f/2/7/f279e71e-efb0-4155-873d-5554a0608523/CLRInsideOut2008_01.exe

Cet utilitaire est décrit à API Windows Accès Constantes et Structs P / Invoke .

L'article est maintenant uniquement disponible Janvier 2008 Original comme . CHM aide fichier télécharger , lié au bas de https://msdn.microsoft.com/magazine/msdn-magazine-issues . Pour l'instant, le code source est disponible à http://clrinterop.codeplex.com/ .

Par exemple, je l'ai récemment utilisé l'API XPS d'impression et besoin des interfaces xpsobjectmodel.h. Windows SDK est livré avec xpsobjectmodel.idl heureusement.

Je généré le fichier TLB avec MIDL premier et utilisé TLBIMP pour générer un assemblage DLL approprié prêt à être ajouté dans la section « Références ... » dans mon projet C #.

Assurez-vous d'utiliser les outils avec la version correcte pour votre cadre de projet. par exemple, si votre cadre de projet est basé 3,5, en utilisant tlbimp du 4.0 ensemble d'outils ne fonctionne pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top