[C con Clase] Duda sobre uso de DLL

Steven Davidson srd4121 en njit.edu
Mie Jun 11 22:28:32 CEST 2008


Hola Andrés,

Ante todo, bienvenido a la lista y a este "mundillo" de C++.

Andres Chamorro wrote:
> Tengo dudas sobre el uso de una DLL y archivos de cabecera(.h) para
> el protocolo OPC.
> Supuestamnte esta DLL y estos archivos de cabecera los usaron con
> visual C++, pero a mi me gustaria usarlos en Dev C++, y no me
> funciona.
> 
> Se puede aser esto, o las DLL sirven solo para siertos compiladores??

Las DLL's sirven para cualquier compilador bajo MS-Windows. Lo que sí 
depende del compilador y enlazador es el formato de las bibliotecas de 
importación.

Típicamente, un compilador traerá una biblioteca de importación con 
extensión ".lib" (o ".a" en el caso de Mingw), la cual aparenta ser una 
biblioteca estática, pero sin serla. También puede existir un fichero de 
definiciones, aunque hoy en día ya no es necesario que exista. La 
biblioteca de importación realmente contiene referencias a la DLL.

Hay dos formas de usar una DLL. Podemos cargar la DLL explícitamente al 
igual que "cargar" sus funciones o podemos dejar la carga al enlazador 
para que la haga implícitamente. Para hacer el método explícito, sólo 
necesitamos la DLL, aunque conviene tener el fichero de cabecera 
también. Para el método implícito, necesitamos la biblioteca de 
importación y obviamente la DLL.

Supongo que te interesa el método implícito. Bajo Mingw, tenemos dos 
herramientas que nos servirán para convertir la biblioteca de 
importación de VC++ a una versión de Mingw. Ten presente que estos 
programas se ejecutan en la consola, por lo que deberías abrirla para 
poder hacer la conversión. Si tienes el fichero de definiciones ".DEF", 
entonces escribe lo siguiente:

C:\> dlltool -k -d opc.def -l libopc.a

Esto creará la biblioteca de importación "libopc.a". Ahora puedes 
agregar esta biblioteca a las opciones de tu proyecto. Para más 
información acerca de agregar bibliotecas externas, consulta nuestro 
artículo yendo a: http://c.conclase.net/devcpp.php?art=libestatica  mira 
el apartado titulado "Usar una librería en nuestros programas".

Si no tienes el ".def", entonces puedes crearlo con la otra herramienta 
de Mingw: "reimp". Por ejemplo,

C:\> reimp -d opc.lib


Espero que esto te oriente.

Steven





Más información sobre la lista de distribución Cconclase