Differenze tra le versioni di "Scrivere una libreria esterna alla quale viene passata una stringa e che ritorna una stringa"
Da Gambas-it.org - Wikipedia.
(Creata pagina con 'Vediamo un esempio in cui il codice Gambas invoca una funzione esterna presente in una libreria, scritta da noi e che chiameremo ad esempio: ''libadhoc.c'', ed alla quale pass...') |
|||
Riga 10: | Riga 10: | ||
− | + | char * p(char * s) { | |
r = "si"; | r = "si"; |
Versione delle 16:14, 11 mag 2014
Vediamo un esempio in cui il codice Gambas invoca una funzione esterna presente in una libreria, scritta da noi e che chiameremo ad esempio: libadhoc.c, ed alla quale passa una stringa. La funzione esterna a sua volta passerà alla funzione chiamante di Gambas una stringa.
Il codice C della libreria esterna sarà il seguente:
#include <string.h> char *r; char t[2] = "ca"; char * p(char * s) { r = "si"; strcat(s,r); strcat(s,t); return s; }
Codice Gambas:
Per passare una stringa ad una funzione esterna, bisognerà utilizzare la funzione alloc():
Private Extern Passa_Riceve(testo As Pointer) As String In "/tmp/libadhoc" Public Sub Main() Dim s As String Dim po As Pointer ' Genera la libreria condivisa "libadhoc.so": Shell "gcc -o /tmp/libadhoc.so " & Application.Path &/ "libadhoc.c -shared -fPIC" Wait ' Per passare una stringa ad una funzione esterna, utilizzare 'alloc()': po = Alloc("Mu") s = Passa_Riceve(po) Print "---> "; s Free(po) End