How to use std. packages in so files written in dlang
Mike Parker via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Aug 11 18:45:29 PDT 2016
On Friday, 12 August 2016 at 01:36:34 UTC, grampus wrote:
> On Friday, 12 August 2016 at 01:09:47 UTC, ketmar wrote:
>> On Friday, 12 August 2016 at 00:57:42 UTC, grampus wrote:
>>
>> it's 'cause you didn't initialized druntime. you have to use
>> dlsym to get "rt_init" function and call it right after
>> loading your .so, but before calling any other API from it.
>>
>> also, note that druntime is using SIGUSR1 and SIGUSR2 for it's
>> internal housekeeping, so don't use this signals in your C++
>> code.
>
> Thank you for the quick reply.
> Do you mean that I have to do some changes on the C side?
> I can use dlang in this existing project as long as nothing can
> be changed on the C side.
> Do you think I can use dlang in our case?
>
> Thank you
One way to handle this is to add initialize/terminate functions
to your shared library. In that case, rather than rt_init, you
can call the Runtime functions [1]:
import core.runtime;
extern(C) int initialize() { return Runtime.initialize(); }
extern(C) int terminate() { return Runtime.terminate(); }
From your C program, call initialize after loading the library
and terminate before exiting.
[1] http://dlang.org/phobos/core_runtime.html#.Runtime
More information about the Digitalmars-d-learn
mailing list