Tengo una interfaz definida en un archivo IDL que me gustaría usar en C#. ¿Hay alguna manera de convertir el IDL a algo utilizable en C#?Convertir el archivo IDL de la interfaz a C#
Respuesta
Una forma es ejecutar MIDL
en el IDL para crear una biblioteca de tipos (.tlb). Esto requiere un bloque library
en el IDL. Una vez que tenga .tlb, puede ejecutar tlbimp.exe
en él para obtener una definición de C#/DLL de interoperabilidad.
y luego puede usar [JetBrains dotPeek] (https://www.jetbrains.com/decompiler/) para ver la definición de C# de la DLL de interoperabilidad generada. –
¿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 inbuild.
Puede usar la siguiente herramienta para convertir las estructuras, pero debe verificar la salida manualmente.
Esta utilidad se describe en Accessing Windows API Constants and Structs for P/Invoke.
El artículo original de enero de 2008 ahora solo está disponible como .CHM help file download, vinculado al final de https://msdn.microsoft.com/magazine/msdn-magazine-issues. Por el momento, el código fuente se puede encontrar en http://clrinterop.codeplex.com/.
¿Dónde está la documentación para esto> ?? –
@ChandraEskay Dado que el enlace al artículo de MSDN ya no era correcto, me tomé la libertad de actualizar la información sobre esta utilidad. –
Por ejemplo, recientemente utilicé la API de impresión XPS y necesitaba 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 ensamblado DLL apropiado, listo para ser agregado en la sección 'Referencias ...' en mi proyecto C#.
Asegúrese de utilizar las herramientas con la versión correcta para su marco de proyecto. Por ejemplo, si su marco de proyecto está basado en 3.5, no funcionará usar tlbimp del conjunto de herramientas 4.0.
- 1. Incluyendo un archivo .idl en un proyecto de C++
- 2. Cambiar el archivo de encabezado generado por IDL
- 3. Cómo convertir la interfaz VB.net con enum a C#
- 4. Convertir archivo PDF a HTML en C#
- 5. Convertir archivo PDF a imágenes usando C#
- 6. ¿Cómo puedo convertir el archivo XSD a C# Class
- 7. de MIDL cambia caso de identificador al compilar archivo IDL
- 8. Convertir archivo pdf a archivo de texto
- 9. ¿Convertir la ruta del archivo a un archivo URI?
- 10. archivo de encabezado de interfaz C++/cli
- 11. Moq: no se ha podido convertir a la interfaz
- 12. EF4 No se puede convertir tipo concreto a la interfaz
- 13. Convertir archivo .wav a .mp3
- 14. Python - convertir el archivo csv a JSON
- 15. Convertir archivo CSV a XML
- 16. Convertir archivo de clase a archivo dex
- 17. Generación de Java desde IDL (evitando el paquete predeterminado)
- 18. Convertir el archivo RDL SQL2008 a SQL2005
- 19. Cómo convertir el archivo WAV a M4A?
- 20. Interfaz C# e implementación en el mismo archivo - ¿buena idea?
- 21. Convertir código PHP a C++
- 22. Implementando la interfaz C#
- 23. Convirtiendo la interfaz de objeto COM de C a Delphi
- 24. Convertir ens xsd a C#
- 25. Convertir un archivo .bak a .SQL archivo
- 26. cómo convertir el archivo .java a un archivo .class
- 27. Cómo convertir/convertir el puntero a referencia en C++
- 28. Convertir cadena a la fecha - C#
- 29. Interfaz de lista: de Java a C#
- 30. Convertir un archivo csv a json usando C#
¿Qué es "algo utilizable"? – Achim
Algo utilizable en C#. Algo que compilará. –