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)?
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)?
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 quiere DUMPBIN /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.
LIB.EXE es el bibliotecario para VS
http://msdn.microsoft.com/en-us/library/7ykb2k5f(VS.80).aspx
(como libtool en Unix)
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 ++
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
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 para findstr
(si desea una herramienta de MS-Windows), o grep
.
Buscar la Static
palabra clave usando una de estas herramientas parece ser una buena pista.