[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Is it possible/acceptable to create a component in Gambas that depends on a shared library?


On 2/11/26 12:00 PM, gbWilly wrote:
On Tuesday, February 10th, 2026 at 22:49, Lee <t.lee.davidson@xxxxxxxxx> wrote:

On 2/10/26 3:06 PM, gbWilly wrote:
A lot of the questions you pose here Claus have my attention as well. I'm very curious to read answers to these questions as I do want to experiment with interfacing with some C libraries myself.

Hi Willy,

Are you interested in interfacing with a shared library directly from Gambas using the "LIBRARY" and "EXTERN" declarations?
Or, are you interested in creating one or more components that interface with a shared library using the Gambas Programming
Interface (https://gambaswiki.org/wiki/dev/api)?


Just getting an application interface with a library would be where I would like to start. I know nothing on the matter, but I am curious.

gbWilly

Understood. You're probably already aware of the "how to" at https://gambaswiki.org/wiki/howto/extern, but I mention it just in case. Perhaps that is a bit too complex for your preference at the moment. I admit that I haven't fully read it.

I have attached a very simple project that uses six functions from "Libc:6". I got the 'perror' function from [1] and the rest from [2].

This example may be too simple as, for example, one thing it does not demonstrate is how to handle a callback, ie. using an external function that expects a callback function as one of its arguments. Gambas makes this quite simple.

[1] https://sourceware.org/glibc/manual/latest/html_node/Error-Messages.html
[2] https://sourceware.org/glibc/manual/latest/html_node/Reading-Persona.html


--
Lee

--- Gambas User List Netiquette [https://gambaswiki.org/wiki/doc/netiquette] ----
--- Gambas User List Archive [https://lists.gambas-basic.org/archive/user] ----
<salt FCKGM-0001-C6E4-AEDD-AA43>
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
</salt>