Richiamare con l'appoggio di una libreria esterna una funzione presente in un sorgente C
Per richiamare ed utilizzare una funzione presente in un codice sorgente in linguaggio C non compilato, sarà necessario trasformare detto codice sorgente C in un'apposita libreria dinamica condivisa .so. Lo scopo quindi è di servirsi delle capacità di una determinata funzione presente in un codice sorgente in C, astraendola così dal contesto del restante codice 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, ottenuta dal codice del sorgente C, sarà ad esempio, chiamata: "libadhoc.c" .
Il codice dell'applicativo Gambas, invece, sarà il seguente:
Private Extern Calculus(v as Integer) As Integer In "/tmp/libadhoc" Public Sub Main() Dim i As Integer ' Generiamo la libreria esterna condivisa "libadhoc.so" dal codice del sorgente C: Shell "gcc -o /tmp/libadhoc.so /percorso/del/codice/sorgente/C -shared -fPIC" Wait ' Invocare la funzione esterna: i = Calculus(qui un numero qualsiasi) ' Mostra in console il valore come elaborato dalla funzione esterna: Print i End