D: How would one make a shared dynamically linked D library?
IchorDev
zxinsworld at gmail.com
Thu Nov 9 16:54:54 UTC 2023
On Wednesday, 8 November 2023 at 11:48:58 UTC, BoQsc wrote:
> I would like to export some functionality as external shared
> dynamically linked D library.
>
> Is it possible to do that in D Language
Yes, as long as the symbols you want to use externally are
`public`, which is the default.
When it comes to linking, the main factor is usually matching
symbol mangling. In C you would help users do this by
distributing your header files. In D it's more common to
distribute your source code, so if you want to distribute a
"header" you'll need to remove your function bodies:
```d
//regular function:
int add(int x, int y) nothrow{
x += y;
return x;
}
//for a D "header":
int add(int x) nothrow;
```
> what are limitations?
The desired template instantiations must be generated at compile
time, not at link time. CTFE probably won't work.
> Example of shared dynamic libraries depending on other shared
> dynamic libraries would be great as well.
There should be no material difference to using a shared library
from an executable binary.
More information about the Digitalmars-d-learn
mailing list