libffi-d: D binding to libffi

Alex Rønne Petersen xtzgzorex at gmail.com
Thu Dec 8 11:10:48 PST 2011


Hi folks,

Since I needed a way to call arbitrary C functions dynamically (while 
knowing their pointer + signature), I decided to write a binding to 
libffi for D.

https://github.com/lycus/libffi-d

There is heavy focus on simplicity: It is composed of 3 enums (FFIType, 
FFIStatus, FFIInterface), one alias (FFIFunction), and one function 
(ffiCall). The API is fairly self-describing, so I haven't really spent 
a whole lot of time on docs. For examples, see the tests sub-directory 
(please also read 'info libffi').

Known limitations:

* No access to the closure API.
* No access to the 'raw' API (which is undocumented in libffi anyway).

Known issues:

* Detection of soft float ABIs is not currently done (due to limitations 
in most D compilers).
* ABI overriding for some rare Unix ABIs is not currently possible.
* Currently no good way to actually use the library on Windows. Anyone 
who knows their stuff about DMD and DLLs on Windows, please do 
contribute. ;)

If you run into any issues, please throw a test case at the GitHub issue 
tracker and I'll look into it. Enjoy!

- Alex


More information about the Digitalmars-d-announce mailing list