You are on page 1of 3

1

Creación de DLL para NetBeans con GCC

P. Aluisa, J. Guarnizo, B. Vallejo, H. Yuquilema, Escuela Politécnica del Ejército

MinGW
Resumen: Es una colección de libre acceso y libremente distribuible de
Este artículo describe el proceso más adecuado para la Windows de archivos específicos de cabecera y bibliotecas de
creación de una librería dinámica (.dll) para NetBeans, en importación combinados con conjuntos de herramientas GNU
aplicaciones con JNI a través del compilador GCC. que permiten la producción de programas nativos de
Windows.
Palabras clave:
Los paquetes incluidos en MinGW:
 NetBeans
 JNI
 GCC  binutils - ensamblador, enlazador, ...
 Compilador  MinGW-tiempo de ejecución - Los encabezados y
las bibliotecas para la biblioteca de C
I. INTRODUCCIÓN  w32api - Windows los archivos de cabecera de la
En este tema de investigación hablaremos sobre la API y bibliotecas
generación de la librería dinámica (DLL) usando el  gcc-core - compilador de C
compilador GCC. Al principio se da una breve definición
 gcc-g + + - compilador de C + +
sobre lo que es un método nativo. El compilador GCC viene
incluido en el MinGW, por lo que también se dará una breve  gcc-objc - Objetivo compilador de C
descripción sobre este programa y posteriormente hablaremos  gcc-GNU Fortran - compilador Fortran 90/95
sobre el compilador GCC pero no sobre todas sus utilidades ya  gcc-java - compilador de Java
que solo nos centraremos en la generación de DLL´s.  gcc-ada - compilador de Ada
 MinGW-gdb - nativas de Windows construir
II. DESARROLLO DEL ARTÍCULO
depurador de GNU
 mingw32-make - nativas de Windows construcción
Métodos Nativos de GNU make
La plataforma Java II incorpora la interfaz de programación
 MinGW-utils - Utilidades Varios
Java Native Interface (JNI), para permitir que se puedan
escribir programas en otros lenguajes distintos a Java y
mantener la portabilidad entre todas las plataformas. Instalación de MinGW
Sobre la instalación se debe descargar el software de la página
Biblioteca de Enlace Dinámico (.dll) http://www.mingw.org y seguir los pasos que se dice ahí.
Es el término con el que se refiere a los archivos con código Posterior a la instalación se debe copiar las librerías jni.h y
ejecutable que se cargan bajo demanda de un programa por jni_md.h en donde se encuentre instalado el MinGW,
parte del sistema operativo. Esta denominación es exclusiva a específicamente en la carpeta include del mismo. Esto servirá
los sistemas operativos Windows siendo ".dll" la extensión para poder utilizar GCC para generar las DLL´s.
con la que se identifican estos ficheros, aunque el concepto
existe en prácticamente todos los sistemas operativos Compilador GCC
modernos. GCC es un compilador integrado del proyecto GNU para C,
C++, Objective C y Fortran. Es capaz de recibir un programa
Herramientas Necesarias fuente en cualquiera de estos lenguajes y generar un programa
ejecutable binario en el lenguaje de la máquina donde ha de
Java JDK, NetBeans IDE, MinGW 5.1.6 (Incluye compilador correr.
GCC), Notepad++ (editor de texto). La sigla GCC significa "GNU Compiler Collection".
Originalmente significaba "GNU C Compiler"; todavía se usa
GCC para designar una compilación en C. G++ refiere a una
compilación en C++.
2

La tabla 1 muestra los diferentes tipos de archivo que compila 3. Programar en C la implementación del o los métodos
GCC siendo el .c o .cpp y el .h los usados para generar las nativos en cualquier editor de texto (Notepad++).
DLL´s que nos interesan para ejecutar programas en lenguaje
java con métodos nativos en NetBeans.

TABLA I
TIPOS DE ARCHIVO QUE COMPILA GCC
.c fuente en C
.c .cc .cpp .c+ fuente en C++; se recomienda
+ .cp .cxx  .cpp
.m fuente en Objective-C
.i C preprocesado
.ii C++ preprocesdo
.s fuente en lenguaje ensamblador
.o código objeto
.h archivo para preprocesador
(encabezados), no suele
figurar en la línea de comando
de gcc
4. Compilar el código C y generar una DLL. Para eso
Creación de DLL´s abrimos una ventana de comandos y nos ubicamos en C:\,
1. Definir una clase Java con los métodos nativos donde se guardo nuestro archivo de cabecera (.h).
Nativo.java (clase con métodos nativos)
 Si se desea obtener el archivo objeto (programa.o) y el dll
el código a escribirse es el siguiente:

gcc –c programa.o programa.c


gcc -shared –Wl, -kill -o operaciones.dll programa.o

 Si solo se desea obtener el dll entonces el código será:

2. Generar el archivo de cabecera .h, en nuestro caso gcc -shared –Wl, -kill –o operaciones.dll programa.o
utilizaremos el JNIStubMaker de Netbeans para la
generación del mismo. O también

gcc -shared –Wl,-add-stdcall-alias –o operaciones.dll


programa.o

Cualquiera de estas dos acciones generará el archivo


operaciones.dll.

5. Generamos una clase Main en el paquete de Java en


Netbeans para probar nuestros métodos, recordando que
se debe copiar la librería DLL en el lugar donde se
guardó el proyecto.
3

6. Resultado Ing. Electrónica en Automatización y Control en la Escuela Politécnica del


Ejercito.

Henry Alfonso Yuquilema Andino nació en Quito, Ecuador, el 4 de mayo de


1989. Se graduó como bachiller en Físico Matemático en el Instituto Nacional
Mejía, ubicado en la misma ciudad de nacimiento. Actualmente estudia Ing.
Electrónica en Automatización y Control.

III. CONCLUSIONES
 En primer lugar es necesario saber en qué plataforma
vamos a trabajar, ya que el compilador GCC fue creado
únicamente para GNU, por lo tanto es preciso descargar la
versión para Windows.

 Para la generación de dll para Java debemos incluir las


bibliotecas jni.h y jni_md.h en las bibliotecas de GCC.

 La programación se realiza en C, C++; lenguajes ya


conocidos y la compilación en GCC es fácil de realizar,
colocando este compilador en una muy buena alternativa
para le generación de dll.

Books (Libros):

[1] FROUFE Agustín (2000). JAVA2: Manual de usuario y tutorial.


México: AlfaOmega Grupo Editor. Pag:499-506

Technical Reports (Informes técnicos):

[2] 2003. GNU Binary Utilities.


http://www.delorie.com/gnu/docs/binutils/binutils_15.html.
Extraído el día 13 de abril de 2010.
[3] 2009. MinGW. http://www.mingw.org/wiki/MinGWiki. Extraído
el día 13 de abril del 2010.
[4] DZNAJDLEDER Pablo, 2009. Acceso a Métodos Nativos (JNI vs.
JNA). http://holamundojava.blogspot.com/. Extraído el 11 de abril
de 2010.
[5] GONZÁLEZ Victor. El compilador GCC.
http://iie.fing.edu.uy/~vagonbar/gcc-make/gcc.htm. Extraído el día
10 de abril de 2010.
[6] 2010. Biblioteca de Enlace Dinámico.
http://es.wikipedia.org/wiki/Biblioteca_de_enlace_din
%C3%A1mico. Extraído el día 13 de abril de 2010.

Paúl Sebastián Aluisa nace en Quito, el 29 de Enero de 1990. Realizó sus


estudios secundarios en el Colegio Técnico Experimental Salesiano “Don
Bosco”, obteniendo el título de Bachiller Técnico en Electricidad y
Electrónica. Actualmente realiza sus estudios en la Escuela Politécnica del
Ejército, con el propósito de obtener una Ingeniería Electrónica en
Automatización y Control.

José Guarnizo Poma nació en Loja, Ecuador, el 8 de septiembre de 1990. Se


graduó de bachiller con especialidad de Físico- Matemático en el Instituto
Tecnológico Superior “Daniel Álvarez Burneo” el cual radica en la misma
ciudad en el año 2007. Actualmente estudia Ingeniería Electrónica en
Automatización y Control en la Escuela Politécnica del Ejército en Sangolqui,
Ecuador.

Bernardo Javier Vallejo Mancero nació en Riobamba, Ecuador, el 13 de


julio de 1989.Se graduó como bachiller en Física Matemática en el colegio
Experimental Montufar, ubicado en la ciudad de Quito, Actualmente estudia

You might also like