Pregunta

Tengo un archivo binario: biblioteca estática de Windows (* .lib).
¿Hay una manera simple de averiguar los nombres de las funciones y su interfaz de esa biblioteca?

¿

algo similar a las utilidades emfar y elfdump (en sistemas Linux)?

¿Fue útil?

Solución

Suponiendo que está hablando de una biblioteca estática, DUMPBIN / SYMBOLS muestra las funciones y los objetos de datos en la biblioteca. Si está hablando de una biblioteca de importación (un .lib usado para referirse a los símbolos exportados desde una DLL), entonces quiere DUMPBIN / EXPORTS .

Tenga en cuenta que para funciones vinculadas con la " C " interfaz binaria, esto aún no le dará valores de retorno, parámetros o convenciones de llamada. Esa información no está codificada en el .lib ; debe saberlo con anticipación (a través de prototipos en los archivos de encabezado, por ejemplo) para poder llamarlos correctamente.

Para las funciones vinculadas con la interfaz binaria de C ++, la convención de llamada y los argumentos se codifican en el nombre exportado de la función (también llamada "cambio de nombre"). DUMPBIN / SYMBOLS le mostrará tanto el " destrozado " nombre de la función, así como el conjunto de parámetros decodificados.

Otros consejos

Abra una consola de comando visual (símbolo del sistema de Visual Studio)

dumpbin /ARCHIVEMEMBERS openssl.x86.lib

o

lib /LIST openssl.x86.lib

o simplemente ábralo con 7-zip :) es un archivo AR

Quería una herramienta como ar t libfile.a en unix.
El equivalente de Windows es lib.exe / list libfile.lib .

LIB.EXE es el bibliotecario para VS

http://msdn.microsoft.com/en -us / library / 7ykb2k5f (VS.80) .aspx

(como libtool en Unix)

" dumpbin -exports " funciona para dll, pero a veces puede no funcionar para lib. Para lib podemos usar '' dumpbin -linkermember '' o simplemente "dumpbin -linkermember: 1".

DUMPBIN / EXPORTS Obtendrá la mayor parte de esa información y al presionar MSDN obtendrá el resto.

Obtenga uno de los paquetes de Visual Studio; C ++

1) Abra un Símbolo del sistema de desarrollador para VS 2017 (o cualquier versión que tenga en su máquina) (Debe ubicarse en: Menú de inicio - > Todos los programas - > Visual Studio 2017 (o cualquier versión que tenga) tener en su máquina) - > Visual Studio Tools  - > Símbolo del sistema para desarrolladores para VS 2017.

2) Ingrese el siguiente comando:

dumpbin / EXPORTS my_lib_name.lib

Como se puede ver en otras respuestas, tendrá que abrir un Símbolo del sistema del desarrollador que se ofrece en su versión de Visual Studio para tener dumpbin.exe en su ruta de ejecución. De lo contrario, puede establecer las variables de entorno necesarias a mano.

dumpbin / EXPORTS yourlibrary.lib generalmente solo mostrará una pequeña lista de símbolos. En muchos casos, no mostrará las funciones que exporta la biblioteca.

dumpbin / SYMBOLS / EXPORTS yourlibrary.lib mostrará esos símbolos, pero también una increíble cantidad enorme de otros símbolos. Por lo tanto, debe filtrarlos, posiblemente con una tubería a findtr (si desea una herramienta MS-Windows) o grep .

Buscar la palabra clave Estática usando una de estas herramientas parece ser una buena pista.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top