Scrivere una libreria esterna che chiama una funzione esterna puntata
Da Gambas-it.org - Wikipedia.
Versione del 16 mag 2014 alle 17:45 di Vuott (Discussione | contributi)
Una libreria esterna appositamente può essere scritta per utilizzare una funzione esterna puntata da un Puntatore.
Nel seguente esempio abbiamo un codice sorgente in linguaggio C, che chiameremo "sorgente_C.c", nel quale è presente la funzione che vogliamo utilizzare e che è puntata da un Puntatore a Funzione:
int (*po)(int); int Funzione_Puntata(int valore) { return valore + 1; }
La libreria esterna, da noi scritta e che chiameremo libadhoc.c, sarà la seguente:
#include <stdio.h> #include "/percorso/del/file/sorgente_C.c" void Chiamata_Funzione(int i) { po = Funzione_Puntata; //inizializzazione del Puntatore a funzione printf("Valore ritornato dalla funzione-puntatore: %d\n", (*po)(i)); }
Il codice sorgente della libreria esterna, da noi scritta, verrà posto nella cartella Dati del progetto Gambas.
L'applicativo Gambas sarà invece il seguente:
Private Extern Chiamata_Funzione(i As Integer) In "/tmp/libadhoc" ' Genera la libreria esterna condivisa da noi scritta: Shell "gcc -o /tmp/libadhoc.so " & Application.Path &/ "libadhoc.c -shared -fPIC" Wait Chiamata_Funzione(99) End