2012-07-25 14 views
6

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)?

+0

¿Te refieres a las exportaciones? – Martin

+0

dicen funciones que se definieron como 'extern C ...' o algo así – myWallJSON

+0

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. –

Respuesta

8

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 
+0

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

+0

@myWallJSON, entonces no hay funciones exportadas por esa DLL. Puedes investigar las otras opciones para 'dumpbin'. – hmjd

+0

incluso "TODO" no proporciona ninguna información. la DLL no administrada se envuelve dentro de una nativa = ( – myWallJSON

2

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?

2

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.

Cuestiones relacionadas