Interfacing via Java Native Interface

John Colvin john.loughran.colvin at gmail.com
Wed Oct 16 03:41:34 PDT 2013


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


More information about the Digitalmars-d-learn mailing list