Tengo un archivo binario: biblioteca estática de Windows (* .lib).
¿Hay una manera simple de encontrar nombres de las funciones y su interfaz de esa biblioteca?
¿Algo similar emfar
y elfdump
utilidades (en sistemas Linux)?
windows
static-libraries
libraries
Nick Borodulin
fuente
fuente
Respuestas:
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 (una.lib
utilizada para referirse a símbolos exportados desde una DLL), entonces quiereDUMPBIN /EXPORTS
.Tenga en cuenta que para las funciones vinculadas con la interfaz binaria "C", esto aún no le dará valores de retorno, parámetros o convenciones de llamada. Esa información no está codificada en
.lib
absoluto; 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 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 nombre de la función "destrozada" como el conjunto de parámetros decodificados.fuente
Abra una consola de comando visual (símbolo del sistema de Visual Studio)
o
o simplemente ábralo con 7-zip :) es un archivo AR
fuente
Quería una herramienta como
ar t libfile.a
en Unix.El equivalente de Windows es
lib.exe /list libfile.lib
.fuente
"dumpbin -exports" funciona para dll, pero a veces puede no funcionar para lib. Para lib podemos usar "dumpbin -linkermember" o simplemente "dumpbin -linkermember: 1".
fuente
LIB.EXE es el bibliotecario para VS
http://msdn.microsoft.com/en-us/library/7ykb2k5f(VS.80).aspx
(como libtool en Unix)
fuente
DUMPBIN / EXPORTS Obtendrá la mayor parte de esa información y golpear MSDN obtendrá el resto.
Obtenga uno de los paquetes de Visual Studio; C ++
fuente
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ú Inicio -> Todos los programas -> Visual Studio 2017 (o cualquier versión que tenga en su máquina) -> Visual Studio Tools -> Símbolo del sistema del desarrollador para VS 2017.
2) Ingrese el siguiente comando:
dumpbin /EXPORTS my_lib_name.lib
fuente
Como se puede ver en otras respuestas, tendrá que abrir un Símbolo del sistema para desarrolladores 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 mostrará solo 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 parafindstr
(si desea una herramienta de MS-Windows), ogrep
.Buscar la
Static
palabra clave usando una de estas herramientas parece ser una buena pista.fuente