LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.
Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 
Gracias al aporte de Tururu en el foro de gambas-es.org, donde ha explicado detalladamente, como usar librerías realizadas en C, en nuestros programas en gambas, muchos programadores de C podrán desarrollar sus entornos gráficos en Gambas, aprovechando las ventajas de sendos lenguajes (simplicidad, facilidad de uso y potencia de cálculo).

Ponemos a continuación el ejemplo de Tururu:

1) En primer lugar crearemos un programa en C  (el cual, va a ser la función "factorial" que llamaremos desde gambas) Utilizar un editor cualquiera (kwrite, gvim o gedit por ejemplo)

// factorial.c
#include <stdio.h>
long factorial(long numero)
{
if (numero>0)
return numero * (factorial(numero-1));
else return 1;
}


ya tenemos el factorial en lenguaje C. , y lo guardamos como factorial.c

2) Ahora vamos a crear un librería compartida, para acceder desde nuestro programa en gambas

desde consola compilamos el programa C


$gcc -fPIC -c factorial.c


se generará un factorial.o

ahora convertimos la biblioteca compartida en libfactorial.so.1.0, de esta manera:


(Siempre debe empezar el nombre de la librería que vayáis a crear por “lib”, así Linux entenderá que es una librería)


$gcc -shared -W1,-soname,libfactorial.so.1 -o libfactorial.so.1.0 factorial.o


3) Ahora creamos enlace simbólico a libfactorial.so

$ln -s libfactorial.1.0  libfactorial.so

Todo esto lo hacemos, por ejemplo, en nuestro /home/usuario


4) Creamos un proyecto en gambas, y en el formulario "Fmain" dibujaremos una "valuebox" y un "labelbox", y escribimos el siguiente código::


'class file
LIBRARY “/home/usuario/libfactorial”
EXTERN factorial(numero AS Long) AS Pointer

PUBLIC SUB ValueBox1_KeyPress()
IF Key.code = Key.enter OR Key.code = Key.return THEN
Label1.text = factorial(ValueBox1.value)
ENDIF
END


Y ya está, tendremos nuestra función factorial, que se ejecuta ya compilada, y que es mucho más rápida que si lo hubiesemos escrito en Gambas (que no olvidemos es interpretado).

Como consejo de organización, Tururu nos comenta que  es preferible que copiéis las librerías en el directorio lib/ de linux, de esta manera, creáis una carpeta con “mislibrerias” en lib, y así podéis acceder desde cualquier aplicación, sea creada con cualquier lenguaje, siempre que permita obtener datos externos, claro.

Finalmente Tururu nos comenta:

Que con rutinas como estas que requieren de muchos cálculos y tiempo y que tanto tarda en Gambas con este ejemplo podrías bordearlo.

Saludos

Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías