[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