I have had success creating shim / interface DLLs that use a simpler, more
portable interface strings or binary data (e.g. xml, json, msgpack[1])
instead of trying to lay things out in memory perfectly between J and C.
Your shim DLL can take the json / xml or whatever and then parse it into
the C struct and then call the C code itself

It may be worth considering -- especially to try and get something up and
running quicker

1 - https://github.com/jonghough/msgpack-j

On Tue, Aug 14, 2018 at 2:30 PM, Raul Miller <[email protected]> wrote:

> You need to understand something about C to approach this problem.
>
> A big issue is that C structs have implementation specific rules about
> how they are laid out in memory.
>
> So that means either (a) studying how the C implementation lays out
> that struct in memory so you can write to memory directly, (search
> for: site:jsoftware.com cd mema), or (b) writing a C function to
> allocate and populate the struct (and another to free it, unless you
> only need one instance, and so on...) and return its address (void*)
> so you can go further.
>
> If you want the language spec to control the memory layout of your
> data structure in C, you need to be using arrays, and not structs.
>
> Thanks,
>
> --
> Raul
>
>
>
> On Tue, Aug 14, 2018 at 1:55 PM Rodrigo de Azevedo
> <[email protected]> wrote:
> >
> > Dear J community,
> >
> > I am a novice. This is my first time posting here.
> >
> > I have a C function of the following type
> >
> > int parser(const char *str, Block *blck);
> >
> > where Block is a struct that has a nested array of structs. I would like
> to
> > call this parsing function in J via a DLL. I have asked a question on
> Stack
> > Overflow that contains all the details:
> >
> > https://stackoverflow.com/q/51813984/6338725
> >
> > I assume that a somewhat similar question has been asked before on this
> > forum. I searched the forums and found some related stuff (e.g., [0]),
> > though hard to grok for a novice. If you could please provide pointers to
> > (commented) J code that does what I have in mind, I would highly
> appreciate
> > it.
> >
> > Thank you for the attention,
> >
> > -Rodrigo
> >
> > [0] http://www.jsoftware.com/pipermail/programming/2007-May/006699.html
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to