On Saturday, 1 May 2021 at 01:29:05 UTC, Mike Parker wrote:


As for the code, your main function should be `extern(C)`. Functions you want to make available to the C side should also be `extern(C)`, and will need equivalent declarations in C. DMD has an experimental feature to generate C headers for you via the `-HC` (`dmd -HC=?` for options). Then all that's left is to link the C objects into D or the D objects into C.


Forgot to talk about going the other way. You'll need to declare in D any C functions you'd like to call, also as `extern(C)`, with the appropriate type translations. There are posts about that on the D Blog:

https://dlang.org/blog/the-d-and-c-series/

Some documentation here:

https://dlang.org/spec/interfaceToC.html

A page on the D Wiki:

https://wiki.dlang.org/D_binding_for_C

And a rather lengthy chapter in my book 'Learning D'. (Email me about that chapter if you'd like).




Reply via email to