Scrivere una libreria esterna alla quale viene passato un Puntatore e che ritorna un Puntatore
Da Gambas-it.org - Wikipedia.
Versione del 6 dic 2021 alle 17:15 di Vuott (Discussione | contributi)
Il caso presente è quello in cui viene scritta una libreria esterna alla quale viene passato un Puntatore. Il valore, ottenuto dall'opportuna dereferenziazione, viene utilizzato in un'operazione nella funzione invocata della libreria, ed il cui risultato verrà trasferito all'applicazione Gambas mediante il ritorno di un Puntatore.
Private Extern Addiziona(pt As Pointer) As Pointer In "/tmp/LibAdd" Public Sub Main() Dim p, po As Pointer Dim b As Byte b = 100 p = VarPtr(b) ' Viene scritta e creata la libreria esterna contenente una funzione: File.Save("/tmp/c.c", "char c;" & "\n\nchar * Addiziona(char * p) {" & "\n\n c = 99 + *p;" & "\n\n p = &c;" & "\n\n return p;\n\n}") Shell "gcc -o /tmp/LibAdd.so /tmp/LibAdd.c -shared -fPIC" Wait po = Annulla(p) If po == 0 Then Error.Raise("Ritornato Puntatore 'Nullo' !!!") Print Byte@(po) End