Richiamare con l'appoggio di una libreria esterna una funzione presente in un sorgente C
Utilizzando una libreria esterna condivisa appositamente creata, è possibile richiamare ed utilizzare una funzione, presente in un codice sorgente in linguaggio C non compilato, astraendola dal contesto del restante codice. Lo scopo quindi è di servirsi delle capacità di una determinata funzione presente in un codice sorgente in C.
La libreria esterna effettuerà solo e semplicemente la chiamata della funzione presente nel sorgente C non compilato.
Mostriamo un esempio pratico supponendo che il file del codice sorgente, che chiameremo sorgente_C.c, sia il seguente, e che intendiamo utilizzare la funzione "calculus()":
int main(int i) { int moltiplicato; moltiplicato = calculus(i + 10); return moltiplicato; } int calculus(int c) { return c * 10; }
Noi intendiamo utilizzare solamente la funzione qui chiamata calculus().
La libreria esterna, che chiameremo "libadhoc.c" avrà il solo compito di invocare la predetta funzione calculus() del sorgente C, e pertanto avrà il seguente tenore:
#include "percorso/del/file/sorgente/sorgente_C.c" int PassaValore(int i) { int c; // Chiama la funzione "calculus()" presente nel sorgente C non compilato: c = calculus(i); return c; }
Questo codice della libreria esterna verrà posto nella cartella Dati del progetto Gambas.
Il codice dell'applicativo Gambas, invece, sarà il seguente:
Private Extern PassaValore(v as Integer) As Integer In "/tmp/libadhoc" Public Sub Main() Dim i As Integer ' Generiamo la libreria esterna condivisa "libadhoc.so": Shell "gcc -o /tmp/libadhoc.so " & Application.Path &/ "libadhoc.c -shared -fPIC" Wait ' Mettiamo in moto l'intera procedura per invocare la funzione presente nel codice sorgente C non compilato: i = PassaValore(qui un numero qualsiasi) ' Mostra in console il valore come elaborato dalla funzione invocata presente nel codice sorgente C non compilato: Print i End