c# - ¿Hay alguna herramienta que genere firmas de P/Invoke para DLL arbitraria no administrada?
.net pinvoke (5)
Este proyecto está activo y parece prometedor para la tarea: https://github.com/mono/CppSharp
Me encontré con una herramienta que genera firmas P / Invoke para las propias DLL no administradas de Microsoft: PInvoke Interop Assistant
¿Hay alguna herramienta similar que genere firmas de P / Invoke para archivos DLL no administrados de terceros?
Alternativamente, cualquier forma de alimentar una DLL de terceros a PInvoke Interop Assistant
EDITAR: problema real que estoy tratando de resolver
Google encontró rápidamente http://www.pinvoker.com/ (Compatiblity aparece como VS2005, 2008 y 2010; no parece haberse actualizado para funcionar con versiones más nuevas)
El compilador de C ++ / CLI de Microsoft también puede hacer esto, si usa /clr:safe
y #include
el archivo de encabezado, generará p / invoke code que puede extraer con, por ejemplo, ILSpy (gratis) o Red Gate Reflector (solía ser gratuito) )
Puede crear un contenedor C # para cualquier DLL nativa, incluidas las funciones de exportación de DLL de estilo C y las clases de exportación de DLL C ++ utilizando xInterop C ++ .NET Bridge con .NET para Native C ++ Bridge . Está disponible para evaluación gratuita con algunas limitaciones.
Descargo de responsabilidad: soy el autor de xInterop C ++ .NET Bridge .
Utilice Dumpbin.exe que viene con VS SDK, Dumpbin , igual tendrá que escribir las firmas Pinvoke manualmente a partir de los datos volcados.
Utilizo PInvoke Interop Assistant para archivos DLL no administrados utilizando la tercera pestaña en la interfaz de usuario, marcada como "SigImp Translate Snippet". Simplemente copie y pegue su encabezado en la ventana "Fragmento de código nativo" y presione Generar (o active Generar automáticamente). Como ilustración, aquí hay un código de una pregunta mía . Tenga en cuenta que, por alguna razón, los errores no aparecen en el panel Error, sino como comentarios en la parte superior del código generado.
Como ya han dicho varias personas, el código generado debe usarse como una guía; puede que tenga que hacer cambios para obtener exactamente lo que desea.