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

Reply via email to