c# interop interface idl

Convertir el archivo IDL de interfaz a C#



interop interface (3)

Tengo una interfaz definida en un archivo IDL que me gustaría usar en C #. ¿Hay una manera de convertir el IDL a algo utilizable en C #?


¿Qué tipos de datos / estructuras se utilizan en el IDL? Primero debe definir los tipos de datos en C # primero si ya no hay un tipo incorporado.

Puede usar la siguiente herramienta para convertir las estructuras, pero necesita verificar la salida manualmente.

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

Esta utilidad se describe en Acceso a las constantes y estructuras de la API de Windows para P / Invoke .

El artículo original de enero de 2008 ahora solo está disponible como descarga de archivos de ayuda .CHM , vinculado en la parte inferior de https://msdn.microsoft.com/magazine/msdn-magazine-issues . Por el momento, el código fuente se puede encontrar en http://clrinterop.codeplex.com/ .


Por ejemplo, recientemente he usado la API de impresión XPS y necesité las interfaces xpsobjectmodel.h. El SDK de Windows viene con xpsobjectmodel.idl afortunadamente.

Primero generé el archivo TLB con MIDL y utilicé TLBIMP para generar un ensamblaje DLL adecuado listo para ser agregado en la sección ''Referencias ...'' en mi proyecto C #.

Asegúrese de usar las herramientas con la versión correcta para el marco de su proyecto. por ejemplo, si el marco de su proyecto está basado en 3.5, el uso de tlbimp del conjunto de herramientas 4.0 no funcionará.


Una forma es ejecutar MIDL en el IDL para crear una biblioteca de tipos (.tlb). Esto requiere un bloque de library en el IDL. Una vez que tenga el .tlb, puede ejecutar tlbimp.exe en él para obtener una definición de C # / DLL Interop.