On Wednesday, 16 October 2013 at 10:11:32 UTC, Andrew wrote:
Hello there!
I've decided to learn a bit of D, as I am currently Android Developer (mostly C++ <- JNI -> Java), I'm trying to create a D shared library which exports function (with extern (C)) for invocation from Java. My .d file contains only a single function returning an int, .java calls this function several times. This approach only works if d-function is trivial, e.g. it's not using any D functionality (I believe that it is related to GC and memory allocation). For example, if my d-function just returns some constant integer, java side receives it. core.stdc.stdio also works and allows console output, but it's not the case with std.stdio.writeln and similar functions. If I use any d-specific functions my program crashes while calling native code with some weird message like following:
"Invalid memory access of location 0x0 rip=addr".

It seems like D is not initialized at all, maybe there is some internal function like dinit() which I can call in order to activate everything?

Thanks.

Try using Runtime.init() from core.runtime

Reply via email to