2009-03-14 17 views
5

Se me ha proporcionado una pequeña biblioteca, que consta de un .dll, un encabezado .h y un archivo .def. Estoy bastante seguro de que la biblioteca estaba escrita en C, pero posiblemente en C++.Uso de una DLL con el encabezado .h en C++

Es posible para mí acceder a las funciones en la biblioteca sin utilizar el método LoadLibrary/GetProcAddress/FreeLibrary del que generalmente se habla. No tengo un archivo .lib, ¿es habitual tener uno?

Literalmente he pasado los últimos 2 días buscando esto. Parece que, dado que se me ha proporcionado un archivo de cabecera que define las funciones que deseo utilizar desde el dll, y un archivo .def, no debería necesitar cargar explícitamente cada función manualmente (LoadLibrary/GetProAddress/FreeLibrary) - en En mi caso, usaré alrededor de 5 o 6 funciones del .dll, pero hay alrededor de 70 disponibles y parece que sería un dolor de cabeza y resultaría en un desorden innecesario de código.

Gracias por cualquier consejo.

Respuesta

3

Visual C++ tiene "lib "- búscalo en la ayuda en línea.

Utilice "lib/def" para hacer el archivo .lib.

2

Necesita un archivo lib - contiene los stubs que el vinculador necesita para crear la tabla de importación para su DLL.

No estoy seguro si esto iba a funcionar, pero se puede intentar:

Crear un archivo .C con talones de vacíos y el archivo .def. Compile como una DLL con el mismo nombre exacto para generar .lib. Bote la nueva DLL y enlace con lib, si la DLL existente está en el mismo directorio que su exe, su programa debería poder cargarla y enlazarla.

Creo que esto funcionará porque las DLL nativas no tienen un nombre fuerte.

7

Hay varias maneras de crear una biblioteca de importación para un archivo DLL - Microsoft documenta un método para crear una a la construcción de su propio archivo .def:

Cuestiones relacionadas