Las librerías de programación son herramientas para hacer que el desarrollo de software sea más eficiente. Proporcionan fragmentos de código reutilizables que los desarrolladores pueden utilizar para programar de forma rápida y sencilla.

En Windows son los famosos archivos que tiene por extensión .DLL, en Linux suelen terminar su nombre en .so

Una biblioteca escrita en C, tiene un archivo de cabecera (archivo con extensión .h) el cual contiene la definición de las funciones, tipos de datos, etc. que se definen en esta librería.

Desde Free Pascal, es sencillo o relativamente sencillo hacer uso de estas bibliotecas, si se escribe un archivo de cabecera pero usando el lenguaje y la sintaxis de Free Pascal.

Introducción

Personalmente he escrito varias cabeceras para diversas bibliotecas. Para ello me he apoyado en la Wiki de pascal, en las siguientes entradas:

Además del foro de Lazarus y Free Pascal.

Además, con lo aprendido he ido haciendo notas, que me han ayudado.

Definiendo la biblioteca.

El nombre de la librería externa se debe definir como una constante, y usar los condicionantes de compilación, por ejemplo:

Funciones void

Las funciones void (que no retornan nada).

Se declaran en Free Pascal como procedimientos (procedure)

Funciones que retornan un puntero

Una función que retorna un punto como la siguiente:

Es declarada como una función que devuelve un puntero.

El puntero debe apuntar a un tipo de dato o estructura conocida. Pero hay veces que no es posible como la definición anterior.

Cuando la función retorna un estructura desconocida u opaca

Algunas declaraciones en C devuelve una estructura que no es conocida, o puede ser diferente dependiendo de la situación. Por ejemplo:

Esto, en Free Pascal, se denomina una estructura opaca, de acuerdo con el post: https://forum.lazarus.freepascal.org/index.php/topic,61311.0.html

Se declaran así:

Más información en la ayuda de Free Pascal:

Cuando una función es un callback

La siguiente declaración es un callback en C.

En Pascal se debe definir de la siguiente manera:

Estructura con una rutina en la declaración

La siguiente estructura en C

En Free Pascal sería:

La línea siguiente, sería un puntero a procedimiento

Su conversión sería:

Conversión de tipos de datos

CPascalBits
charchar8 bits(ascci)
signed charshortint8 bits con signo
unsigned charbyte8 bits sin signo
charpchar32 bit (puntero a null-terminated string)
short intsmalint16 bits con signo
unsigned short intword16 sin signo
intinteger16 (o 32) bits (genérico) con signo
unsigned intcardinal16 (o 32) bits (genérico) sin signo
floatsingle32 bits con signo
long long intInt6464 bits con signo
doubledouble64 bits con signo
unsigned long long intuInt6464 sin signo





Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio esta protegido por reCAPTCHA y laPolítica de privacidady losTérminos del servicio de Googlese aplican.

El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.