> How to send the memory location that is "writable"?
You just need to use non-scalars.
func=: 'module.dll func > i i *i' NB. use ">"
func 123;p=.,_1 NB. should be non-scalar
{.p NB. address of assigned pointer
symdat is used when you need to fill out or pass a
memory pointer, which corresponds to variable data.
Very rare, for example in pcall, to pass the address
of function to call that resides in a noun.
--- Yuvaraj Athur Raghuvir <[EMAIL PROTECTED]> wrote:
> Thanks Bill.
>
> Depends.exe gave me the clue on the procedure name. I picked up the "name"
> from the lib file assuming that would be the mangled name.
>
> Next problem:
>
> C code is as follows:
>
> opt* set = 0;
> int setlen = 0;
> setlen = mo_builtin_settings (&set);
>
> My translation is as follows:
> init =: verb define
> s =: 0
> l =: settings <(iad 's')
> )
>
> When executed, J crashes!!
>
> The instruction at "0x010d2a40" referenced memory at "0x00000069". The
> memory could not be "written"
>
> How to send the memory location that is "writable"?
>
> Thanks,
> Yuva
>
>
> On Fri, Feb 15, 2008 at 4:23 PM, bill lam <[EMAIL PROTECTED]> wrote:
>
> > cd does not know anything about the actual protocol of the api function
> > being
> > called. It only check if arguments passed to it agree with the signiture.
> >
> > (procedure not found) means the dll is found but the named function is not
> > inside the dll so that you have to find what is the real mangled name
> > using eg.
> > depend.exe
> >
> >
> > Yuvaraj Athur Raghuvir wrote:
> > > Hello,
> > >
> > > I have been cracking my head on the cd errors. Any help will be
> > > appreciated!!
> > >
> > > Context: I want to create a J interop code to MonetDB [1]. I have a
> > simple C
> > > code running that uses MonetDB in the embedded mode. I want to port that
> > to
> > > J.
> > >
> > > OS : Win XP / 32
> > >
> > > To port:
> > > typedef struct opt {
> > > opt_kind kind;
> > > char *name;
> > > char *value;
> > > } opt;
> > > __declspec(dllimport) int mo_builtin_settings(opt **Set);
> > >
> > >
> > > My J port:
> > > symget=: 15!:6
> > >
> > > symdat=: 3 : 0 NB. symdat symget <'name'
> > > had=. {.memr y,(IF64{4 8),1,JPTR
> > > had+{.memr had,0,1,JPTR
> > > )
> > >
> > > iad=: [EMAIL PROTECTED]@boxopen
> > >
> > >
> > > MUTIL =: '"E:\08.utils\monetdb\monetdb01\monetdb01\lib\libmutils.dll"'
> > > cdu =: 1 : '(MUTIL,m)&cd'
> > > settings =: '_mo_builtin_settings > i i' cdu
> > >
> > > init =: verb define
> > > s =: 0
> > > l =: settings <(iad 's')
> > > )
> > >
> > > Observations:
> > > 1) With the above definition, I get cder 2 0
> > > init ''
> > > |domain error: cd
> > > | l=: settings<(iad's')
> > > cder ''
> > > 2 0
> > >
> > > 2) Just to check if the procedure is getting discovered, I did this:
> > > settings =: '_mo_builtin_settings > i l' cdu
> > >
> > > init ''
> > > |domain error: cd
> > > | l=: settings<(iad's')
> > > cder ''
> > > 5 1
> > >
> > >>From this I infer that :
> > > 2a) method is found in the library
> > > 2b) the declaration of second parameter is wrong.
> > >
> > > Q: Why do I get a 2 0 (procedure not found) error in this case? As far
> > as I
> > > can see J is able to tell me that the declaration is invalid that tells
> > me
> > > that the procedure name resolution is ok.
> > >
> > > Q: Will I get a 2 0 error on execution of the method due to other
> > internally
> > > called methods? If so, how can I discover the missing libraries that can
> > > help in the execution?
> > >
> > > Note: My C code in VC++ 2005 Express Edition works fine!
> > >
> > > Thanks,
> > > Yuva
> > >
> > >
> > > [1] http://www.monetdb.nl/
> > > ----------------------------------------------------------------------
> > > 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
>
____________________________________________________________________________________
Looking for last minute shopping deals?
Find them fast with Yahoo! Search.
http://tools.search.yahoo.com/newsearch/category.php?category=shopping
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm