Differenze tra le versioni di "Richiamare con l'appoggio di una libreria esterna una funzione presente in un sorgente C"
Riga 32: | Riga 32: | ||
− | + | Public Sub Main() | |
Dim i As Integer | Dim i As Integer | ||
<FONT color=gray>' ''Generiamo la libreria esterna condivisa "libadhoc.so" dal codice del sorgente C:''</font> | <FONT color=gray>' ''Generiamo la libreria esterna condivisa "libadhoc.so" dal codice del sorgente C:''</font> | ||
− | + | Shell "gcc -o /tmp/libadhoc.so ''/percorso/del/codice/sorgente/C'' -shared -fPIC" Wait | |
<FONT color=gray>' ''Invocare la funzione esterna:''</font> | <FONT color=gray>' ''Invocare la funzione esterna:''</font> | ||
− | + | i = Calculus(''qui un numero qualsiasi'') | |
<FONT color=gray>' ''Mostra in console il valore come elaborato dalla funzione esterna:''</font> | <FONT color=gray>' ''Mostra in console il valore come elaborato dalla funzione esterna:''</font> | ||
− | + | Print i | |
− | + | End |
Versione attuale delle 19:40, 12 giu 2024
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