La risposta che dà Gianluigi è corretta in via generale: ossia le librerie condivise .so possono essere richiamate in Gambas da
qualsiasi percorso.
Va sottolineato che in tali casi (ossia quando non sono salvate nei percorsi "standard" ove il sistema normalmente salva le librerie condivise .so) bisognerà dichiarare con precisione il percorso ove la libreria esterna è memorizzata.
Nel caso di specie, sollevato nella Mailing List, funziona lo stesso, MA... ovviamente c'è il problema che nella parola-chiave "Library", utilizzata per dichiarare
quale libreria esterna verrà utilizzata, NON è possibile inserire l'informazione "
Application.Path".
Il caso indicato nella Mailing List, infatti, prevede che la libreria esterna codivisa sia contenuta nella cartella "Dati" del progetto/programma Gambas.
Ebbene, per risolvere il problema bisognerà manualmente o via codice copiare il file della libreria condivisa in (ad esempio) /tmp, avendo cura di impostare nella dichiarazione con la parola-chiave
Library la cartella ove andremo a salvare la copia della libreria esterna (in questo esempio in /tmp).
Esempio pratico, in cui si ha una libreria esterna dinamica nella cartella "Dati" del nostro progetto:
Library "/tmp/mialibreria"
Private Extern FunzioneEsternaChefaQualcosa(valore As Integer) As Integer
Public Sub Main()
Dim i As Integer
' Copia la libreria esterna contenuta dal progetto/programma nella cartella /tmp:'
Copy "mialibreria.so" To "/tmp/mialibreria.so"
' Invoca la funzione esterna contenuta nella libreria esterna sopra copiata in /tmp:'
i = FunzioneEsternaChefaQualcosa(100)
Print i
End