Scrivere una libreria esterna alla quale viene passata una stringa e che ritorna una stringa
Da Gambas-it.org - Wikipedia.
Versione del 11 mag 2014 alle 16:15 di Vuott (Discussione | contributi)
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 * riceve_passa(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 riceve_passa(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 = riceve_passa(po) Print "---> "; s Free(po) End