Set and get data using j.dll can be quite involving. If you use windows, it is much easier you to use to ole/com interface, search jwiki for more info. Note that j8 only support the jdllserver interface.
On 18.07.2014, at 23:05, Jon Hough <[email protected]> wrote: > Thanks, > My test script, so far, is > > from ctypes import * > > cdll.LoadLibrary("j801/bin/libj.so") > j = CDLL("j801/bin/libj.so") > jt = j.JInit() > > j.JDo(jt, "a =: 1") > > a =j.JGetM( "a") > > print a > > This returns 4, even though I set a to be 1. I'm assuming 4 is the number of > bytes returned (i.e. an int)??(By the way, if I do j.JGetM(jt, "a") I get a > seg fault.Regarding jdll.ijs, unfortunately my J-skills are not powerful > enough yet to make much sense of it: > jget=: 3 : 0cmd=. libj,' JGetM i x *c *x *x *x *x''e p n t r s d'=. cmd cd > pJ,(,y);4#<,0if. e do. smoutput 'error code: ',":e return.end.(t,r,s) jfix > d) > In particular > JGetM i x *c *x *x *x *x > is confusing. >> Date: Fri, 18 Jul 2014 10:53:44 -0400 >> From: [email protected] >> To: [email protected] >> Subject: Re: [Jprogramming] Calling j.dll from python >> >> JGetM is what you need, but I strongly suggest reviewing >> http://jsoftware.com/wsvn/addons/trunk/general/misc/jdll.ijs (or your local >> version) to get a better understanding of how things work >> >> This part addresses your question: >> >> jget=: 3 : 0 >> cmd=. libj,' JGetM i x *c *x *x *x *x' >> 'e p n t r s d'=. cmd cd pJ,(,y);4#<,0 >> if. e do. >> smoutput 'error code: ',":e >> return. >> end. >> (t,r,s) jfix d >> ) >> >> >> On Fri, Jul 18, 2014 at 10:51 AM, Jon Hough <[email protected]> wrote: >> >>> Please ignore the last sentence from my previous email. Copied and pasted >>> by accident. >>> >>>> From: [email protected] >>>> To: [email protected] >>>> Date: Fri, 18 Jul 2014 15:50:41 +0100 >>>> Subject: Re: [Jprogramming] Calling j.dll from python >>>> >>>> Joe, thanks. Your suggestion seems to work. >>>> However JGets seems to not exist.How do I then get the variable, once >>> assigned? >>>> I tried to search through the .so/.dll for "get" functions: >>>> >>>> nm -g libj.so | grep Get >>>> Although jdll.ijs seems to contain jget, when I tried to call this (in >>> Python) I get " undefined symbol: jget" (with variations on upper and >>> lower cases) >>>> >>>> >>>> >>>> >>>> and couldn't find a function that seemed to get the variables.Also I'm >>> having trouble finding libj.dll >>>>> Date: Fri, 18 Jul 2014 10:36:06 -0400 >>>>> From: [email protected] >>>>> To: [email protected] >>>>> Subject: Re: [Jprogramming] Calling j.dll from python >>>>> >>>>> JInit() returns the instance that you need to invoke against >>>>> >>>>> see addons/general/misc/jdll.ijs >>>>> >>>>> jdo is defined as: >>>>> >>>>> jdo=: 3 : 0 >>>>> >>>>> (libj,' JDo i x *c') cd pJ, boxopen y >>>>> >>>>> ) >>>>> >>>>> >>>>> so I suspect you need to be passing that pointer address with python >>> too... >>>>> >>>>> >>>>> jt = j.JInit() >>>>> >>>>> j.JDo(jt, "x =: 3") >>>>> >>>>> >>>>> [untested] >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> On Fri, Jul 18, 2014 at 10:33 AM, Thomas Costigliola < >>> [email protected]> >>>>> wrote: >>>>> >>>>>> Bill, Jon, sorry if that suggestion did not apply. I remembered it >>> was a >>>>>> common pitfall when calling from C. Maybe that is not the case now. >>>>>> >>>>>> >>>>>> On Fri, Jul 18, 2014 at 10:29 AM, Jon Hough <[email protected]> >>> wrote: >>>>>> >>>>>>> My previous email was regarding Windows (7 with J801) >>>>>>> I just tried to do the same in Ubuntu (J801) >>>>>>> cdll.LoadLibrary("j801/bin/libj.so") >>>>>>> j = CDLL("j801/bin/libj.so")>>> j.JInit()158010848 >>>>>>> No idea what the above output means. Is that the pointer address of >>>>>>> something? >>>>>>> And then: >>>>>>>>>> j.JDo("x =: 3")Segmentation fault (core dumped) >>>>>>> And Python (2.7) crashed. >>>>>>> >>>>>>>> Date: Fri, 18 Jul 2014 22:09:28 +0800 >>>>>>>> From: [email protected] >>>>>>>> To: [email protected] >>>>>>>> Subject: Re: [Jprogramming] Calling j.dll from python >>>>>>>> >>>>>>>> From which resource did you learn that(not python)? It should be >>> very >>>>>> out >>>>>>>> dated. >>>>>>>> On Jul 18, 2014 6:00 PM, "Jon Hough" <[email protected]> >>> wrote: >>>>>>>> >>>>>>>>> I am trying to call jdll.JDo from python but I get the error >>> message, >>>>>>>>> access violation. >>>>>>>>> >>>>>>>>> Here is my python. >>>>>>>>> >>>>>>>>> Cdll.LoadLibrary(path to j.dll) >>>>>>>>> J =CDLL(path to j.dll) >>>>>>>>> >>>>>>>>> J.JDo("x =: i. 3") >>>>>>>>> >>>>>>>>> This gives am error. In fact any string gives the error. >>>>>>>>> >>>>>>>>> J.JGet doesnt seem to give errors, but since I cannot set any j >>>>>>> variables, >>>>>>>>> it is not easy to test. >>>>>>>>> >>>>>>>>> >>>>>> >>> ---------------------------------------------------------------------- >>>>>>>>> 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 >>>>>>> >>>>>> >>> ---------------------------------------------------------------------- >>>>>> 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 >>> >>> ---------------------------------------------------------------------- >>> 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 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
