On Tuesday, 12 January 2021 at 09:31:08 UTC, ichneumwn wrote:
Follow on to my own question: on Linux, with gcc, I have
created the following file "starter.c" that I inject into my D
shared library:
int rt_init(void);
int rt_term(void);
// should really check for errors!
static void __attribute__((constructor)) Dstarter(void) {
rt_init();
}
static void __attribute__((destructor)) Dterminator(void) {
rt_term();
}
That seems to do the trick. Not sure how clean this is?
You should be able to do the same in D with
`pragma(crt_constructor)` and `pragma(crt_destructor)`:
https://dlang.org/spec/pragma.html#crtctor
https://dlang.org/spec/pragma.html#crtdtor
https://dlang.org/changelog/2.078.0.html#crt-constructor