Differenze tra le versioni di "Richiamare con l'appoggio di una libreria esterna una funzione presente in un sorgente C"
(Creata pagina con 'Utilizzando una libreria esterna condivisa appositamente creata, è possibile richiamare ed utilizzare una funzione, presente in un codice sorgente in linguaggio C <SPAN style...') |
|||
Riga 1: | Riga 1: | ||
− | + | Per richiamare ed utilizzare una funzione presente in un codice sorgente in linguaggio C <SPAN style="text-decoration:underline">non</span> 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. | La libreria esterna effettuerà solo e semplicemente la chiamata della funzione presente nel sorgente C non compilato. | ||
Riga 25: | Riga 25: | ||
− | La libreria esterna, | + | La libreria esterna, ottenuta dal codice del sorgente C, sarà ad esempio, chiamata: "''libadhoc.c''" . |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Il codice dell'applicativo Gambas, invece, sarà il seguente: | Il codice dell'applicativo Gambas, invece, sarà il seguente: | ||
− | Private Extern | + | Private Extern Calculus(v as Integer) As Integer In "/tmp/libadhoc" |
Riga 51: | Riga 36: | ||
Dim i As Integer | Dim i As Integer | ||
− | <FONT color=gray>' ''Generiamo la libreria esterna condivisa "libadhoc.so":''</font> | + | <FONT color=gray>' ''Generiamo la libreria esterna condivisa "libadhoc.so" dal codice del sorgente C:''</font> |
− | Shell "gcc -o /tmp/libadhoc.so | + | Shell "gcc -o /tmp/libadhoc.so ''/percorso/del/codice/sorgente/C'' -shared -fPIC" Wait |
− | <FONT color=gray>' '' | + | <FONT color=gray>' ''Invocare la funzione esterna:''</font> |
− | i = | + | i = Calculus(''qui un numero qualsiasi'') |
− | <FONT color=gray>' ''Mostra in console il valore come elaborato dalla funzione | + | <FONT color=gray>' ''Mostra in console il valore come elaborato dalla funzione esterna:''</font> |
Print i | Print i | ||
'''End''' | '''End''' |
Versione attuale delle 11:12, 9 lug 2015
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