Así que juego alrededor de una DLL (UnityEditor.dll) Quiero obtener una lista de todas las funciones dentro de esta DLL administrada que no están administradas (la DLL probablemente está compuesta de un C++ nativo (con bibliotecas compiladas estáticamente si se usaron) core y el contenedor administrado de C++ todo incluido en un dll). ¿Quiero obtener una lista de todas las funciones no administradas dentro de ese Dll para, por ejemplo, crear mi propio contenedor gestionado \ no gestionado?¿Cómo obtener la lista de funciones dentro de una DLL (administrada y no administrada)?
Respuesta
La utilidad dumpbin.exe
suministrada con Visual Studio se puede usar para mostrar una lista de exportaciones. Por ejemplo:
Dumpbin.exe/Exportaciones C: \ Windows \ System32 \ Kernel32.dll
Ejemplo de salida:
Microsoft (R) COFF/PE Dumper Version 10.00.30319.01 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file C:\Windows\System32\kernel32.dll File Type: DLL Section contains the following exports for KERNEL32.dll 00000000 characteristics 4E20FBA0 time date stamp Sat Jul 16 03:46:56 2011 0.00 version 1 ordinal base 1390 number of functions 1390 number of names ordinal hint RVA name 1 0 AcquireSRWLockExclusive (forwarded to NTDLL.RtlAcquireSRWLockExclusive) 2 1 AcquireSRWLockShared (forwarded to NTDLL.RtlAcquireSRWLockShared) 3 2 00004440 ActivateActCtx 4 3 00066B80 AddAtomA 5 4 00066B20 AddAtomW 6 5 0006ADF0 AddConsoleAliasA 7 6 0006AE60 AddConsoleAliasW
todo lo que consigo es: C: \ Archivos de programa (x86) \ Microsoft Visual Studio 10.0 \ VC> dumpbin.exe/EXPORTS "C: \ Archivos de programa (x86) \ ppp \ UnityEngine.dll" Microsoft (R) COFF/PE Dumper Versión 10.00.40219.01 Copyright (C) Microsoft Corporation. Todos los derechos reservados. volcado del archivo C: \ Archivos de programa (x86) \ PPP \ UnityEngine.dll Tipo del archivo: DLL Resumen 2000 .reloc 2000 .rsrc 74000 .text C: \ Archivos de programa (x86) \ Microsoft Visual Studio 10.0 \ VC> – myWallJSON
@myWallJSON, entonces no hay funciones exportadas por esa DLL. Puedes investigar las otras opciones para 'dumpbin'. – hmjd
incluso "TODO" no proporciona ninguna información. la DLL no administrada se envuelve dentro de una nativa = ( – myWallJSON
Abrir el archivo .dll y mirar para la exportación sección de este archivo PE utilizando las especificaciones binarias PE/COFF available from Microsoft.
Pero eso es una exageración, creo. Tu pregunta debe ser un deseo concreto. ¿Qué es exactamente lo que quieres envolver y qué tienes? ¿Solo los binarios y ninguna fuente/encabezados?
Las DLL no contienen "funciones". Contienen código y puntos de entrada. No es posible distinguir entre código optimizado y transiciones entre funciones a menos que tenga una base de datos de depuración.
- 1. Envoltura administrada con interfaz no administrada
- 2. .NET - Copiar de matriz no administrada a matriz no administrada
- 3. Cómo encontrar una lista de todas las DLL no administradas loadad mediante mi aplicación .net administrada
- 4. ¿Por qué una estructura no administrada no puede ser miembro de una clase administrada?
- 5. El atributo DllImport siempre carga la DLL no administrada
- 6. SEHException no fue administrada
- 7. Fuga de memoria no administrada
- 8. Pasando una cadena de C# a una DLL de C no administrada en Windows Mobile
- 9. ¿Cómo puedo implementar una DLL no administrada con una aplicación WPF de hacer clic una vez?
- 10. GCHandle, Marshal, memoria administrada y no administrada: Para fijar o No para marcar
- 11. Entidad separada y entidad administrada
- 12. memoria no administrada y Managed memoria
- 13. Agregación COM administrada
- 14. Implementación de una matriz genérica no administrada en C#
- 15. ¿Cómo puedo pasar un puntero desde C# a una DLL no administrada?
- 16. Versión administrada de Spy ++ Tool?
- 17. ¿Qué es una DLL no administrada? ¿Qué es un código administrado/no?
- 18. ¿Hay alguna manera de enganchar una función administrada en C# como si fuera una función no administrada en C++?
- 19. ¿Es posible usar una DLL creada usando C# en una aplicación VC++ no administrada?
- 20. asignando memoria "no administrada" en C#
- 21. ¿cómo se llama una función administrada (C#) desde C++?
- 22. ¿Una solución de base de datos completamente administrada?
- 23. ¿Cambios no permitidos cuando la depuración no administrada está habilitada?
- 24. ¿Cómo implementar la interfaz de devolución de llamada desde la DLL no administrada a la aplicación .net?
- 25. ¿Es posible llamar a una DLL administrada desde C++ no administrado?
- 26. Publicar DLL no administrada del proyecto al que se hace referencia
- 27. ¿Hay alguna herramienta que genere firmas de P/Invoke para DLL arbitraria no administrada?
- 28. Fuga no administrada en una aplicación WPF trivial
- 29. Memoria c-code no administrada gratuita en C administrado
- 30. Hacer que la carpeta no sea administrada por el SVN
¿Te refieres a las exportaciones? – Martin
dicen funciones que se definieron como 'extern C ...' o algo así – myWallJSON
UnityEditor.dll es una dll administrada, y lo único que hace es envolver las llamadas al código C++ de Unity. Puede ver su código usando dotPeek. –