Problem using shared D library from C shared library

Mike Parker via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Apr 6 19:01:31 PDT 2016


On Thursday, 7 April 2016 at 01:50:31 UTC, Yuxuan Shui wrote:
> On Thursday, 7 April 2016 at 01:42:54 UTC, rikki cattermole 
> wrote:
>> On 07/04/2016 1:38 PM, Yuxuan Shui wrote:
>>> [...]
>>
>> Have you started D's runtime?
>
> How to start D's runtime? I followed the examples found here: 
> https://dlang.org/dll-linux.html#dso9, which doesn't say 
> anything about starting the runtime.

The runtime is needed if you are going to use any of its 
features, like the GC. If you restrict yourself strictly to C in 
D (and that means avoiding thinks like builtin AAs, array 
concatenation, and anything that touches the runtime) you can do 
without it.

The functions you want are core.runtime.rt_init for 
initialization and core.runtime.rt_term for cleanup [1]. On 
Windows, you can guarantee these will be called by adding a 
DLLMain checking for DLL_PROCESS_ATTACH and DLL_PROCESS_DETACH. 
On other platforms, you'll need to work out something else.

[1] http://dlang.org/phobos/core_runtime.html#.rt_init


More information about the Digitalmars-d-learn mailing list