2012-02-12 22 views
6

Tengo algunos archivos .lib, pero no tengo acceso a los archivos de encabezado .h. ¿Significa esto que los archivos .lib son inútiles ahora?¿Son inútiles los archivos .lib sin los archivos de encabezado?

En caso negativo, ¿cómo puedo volver a utilizarlos?

He intentado utilizar esta línea en mi programa, pero no parece estar compilada en el ejecutable final (verificado con CFF Explorer).

#pragma comment(lib, "SomeLibFile.lib") 

Entonces, ¿la única forma de vincular el archivo .lib es mediante el uso de sus archivos de encabezado? ¿Hay alguna herramienta para recuperar un archivo de encabezado para el archivo .lib?

+4

¿Por qué no solo vas a la página de descarga de la biblioteca y vuelves a descargar los encabezados? – Lefteris

+0

Utilicé una herramienta para generar los archivos. Da salida a .dll y .lib, etc. No tengo problemas para usar el .dll, pero tengo curiosidad sobre por qué produjo un archivo .lib sin .h. – user25101622

+1

¿Cómo se usa el dll? Debe haber un encabezado, ¿verdad? A menos que estés haciendo .NET. ¿Por qué estás siendo tan vago? Dinos el nombre de la herramienta. –

Respuesta

5

Depende de cómo se escribió el código del archivo .lib. Si es una c api, esto es para lo que es la palabra clave extern. Puede encontrar algún tipo de programa que le muestre la función de exportación. Entonces podrías declararlos como externos en tu código. Sin embargo, el problema sería tu estructura de datos.

De todos modos, técnicamente no tiene que tener los archivos de cabecera, puede definir las estructuras de datos por su cuenta y declarar las funciones con la palabra clave extern.

Puede vincular el .lib cuando ejecuta el vinculador al final de su proceso de compilación.

+2

no me malinterpreten, la forma óptima de hacerlo es ir a buscar los encabezados. –

2

Puede vincular con un archivo .lib pasándolo en la línea de comando del enlazador, no es necesario #pragma.

Por supuesto, usar algo dentro de ella requiere conocer convenciones de llamadas, firmas de funciones, diseño de tipos definidos por el usuario, etc. Todo esto suele ser proporcionado por un archivo de encabezado, pero también se puede encontrar en la documentación.

En cualquier caso, los archivos de encabezado no son generados por el compilador (bueno, MIDL y CORBA usan archivos de encabezado generados por la máquina, pero toda la información en el encabezado aún se ingresa manualmente en los archivos .idl). Y a menos que su tecnología use una biblioteca de tipos, la información necesaria no se guarda con una DLL.

Cuestiones relacionadas