Calling D code from C

H. S. Teoh hsteoh at quickfur.ath.cx
Wed Jan 8 19:05:29 UTC 2020


On Wed, Jan 08, 2020 at 06:12:01PM +0000, Stefan via Digitalmars-d-learn wrote:
[...]
> But you can easily do the initialization in your D code, by calling
> rt_init() and rt_term(), like this:
[...]
> extern(C) int rt_init();
> extern(C) int rt_term();
> extern(C) __gshared bool rt_initialized = false;
[...]
> 	if(!rt_initialized)
> 	  rt_init();
> 	rt_initialized = true;

I believe the rt_initialized flag is unnecessary, because
rt_init/rt_term use an atomic counter to keep track of how many times
they were called. So you just have to call rt_init and make sure you
have a matching call to rt_term, and it should Just Work(tm).


T

-- 
The richest man is not he who has the most, but he who needs the least.


More information about the Digitalmars-d-learn mailing list