Scrivere una libreria esterna che chiama funzioni esterne puntate contenute in un Vettore
Da Gambas-it.org - Wikipedia.
Versione del 16 mag 2014 alle 20:25 di Vuott (Discussione | contributi) (Creata pagina con 'Una libreria esterna appositamente può essere scritta per utilizzare due o più funzioni esterne puntate da un ''Puntatore'' contenute in un ''Vettore''. Nel seguente esemp...')
Una libreria esterna appositamente può essere scritta per utilizzare due o più funzioni esterne puntate da un Puntatore contenute in un Vettore.
Nel seguente esempio abbiamo un codice sorgente in linguaggio C, che chiameremo "sorgente_C.c", nel quale sono presenti due o più funzioni da utilizzare, puntate ciascuna da un Vettore del tipo Puntatore a Funzione:
void fun1(int), fun2(int); /* Vettore di Puntatori a Funzione */ void (*vettore[2])() = {fun1, fun2}; void fun1(int i) { printf("--->%d\n", i * 10); } void fun2(int i) { printf("--->%d\n", i + 10); }
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, int n) { (*vettore[i])(n); }
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(fI As Integer, vI As Integer) In "/tmp/libadhoc" Public Sub Main() ' Genera la libreria esterna condivisa da noi scritta: Shell "gcc -o /tmp/libadhoc.so " & Application.Path &/ "libadhoc.c -shared -fPIC" Wait Chiamata_Funzione(1, 80) End