MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: problem with MLGetReal64Array

  • To: mathgroup at smc.vnet.net
  • Subject: [mg84796] Re: problem with MLGetReal64Array
  • From: GS <vokaputs at gmail.com>
  • Date: Tue, 15 Jan 2008 03:11:15 -0500 (EST)
  • References: <fm9an9$ipe$1@smc.vnet.net> <fmf7q3$dm1$1@smc.vnet.net>

On Jan 14, 12:51 am, Jens-Peer Kuska <ku... at informatik.uni-leipzig.de>
wrote:
> Hi,
>
> and you think that the Mathematica Kernel know that
> you wish to get a Real64Array[] and not a
> List[List[___Real]..]
> ??
>
> Regards
>    Jens
>
> GS wrote:
> > I am trying to compile a c program that uses MathLink, to be able to
> > execute an external c-code from Mathematica. I use Mathematica 6.0.1
> > on Windows XP and a gcc compiler from cygwin with -mno-cygwin option.
> > There were no problems with compiling and running the addtwo example
> > rom the Mathematica tutorial. Since I will need to transfer arrays
> > from and to Mathematica, I also want to learn how to use MLPutReal64Array
> > and MLGetReal64Array functions.
>
> > I did not have a problem with compiling an example with
> > MLPutReal64Array from Mathematica online tutorial. However, the following
> > example with MLGetReal64Array does not work for me (see the code
> > below). The code compiles without errors, however, when I Install[]
> > it, and run the command
> >       getRealArray[{{1., 2.}, {4., 5.}}]
> > it crashes the link with the message "LinkObject::linkd: Unable to
> > communicate with closed link ...".
>
> > Did anybody succeed in compiling this example?
> > Thanks.
>
> > PS. My attempt to compile with Microsoft Visual C gives the same
> > result (link crash).
>
> > ******************** array.c ***************************
> > #include "mathlink.h"
>
> > /* read an array of double-precision floating-point numbers from a
> > link */
>
> > void get_real_array(MLINK lp)
> > {
> >    double *data;
> >    int *dims;
> >    char **heads;
> >    int d; /* stores the rank of the array */
>
> >    if(! MLGetReal64Array(lp, &data, &dims, &heads, &d))
> >            {
> >                    /* unable to read the array from lp */
> >                    return;
> >            }
>
> >    MLReleaseReal64Array(lp, data, dims, heads, d);
> > }
>
> > int main(int argc, char* argv[])
> > {
> >    return MLMain(argc, argv);
> > }
> > ********************* end of array.c****************************
>
> > ********************* array.tm********************************
> > :Begin:
> > :Function:         get_real_array
> > :Pattern:          getRealArray[x_]
> > :Arguments:        {x}
> > :ArgumentTypes:    {Manual}
> > :ReturnType:       Null
> > :End:
> > :Evaluate: getRealArray::usage = "gets a matrix of reals."
> > **************************************************************

Hi Jens,
I am not sure that I understand your question, but it looks like you
see what my problem is.
I would appreciate it very much if you could point out how I should
fix the code.
Thank you.
GS


  • Prev by Date: Re: Re: bug -- advice sought
  • Next by Date: Re: Convex hull iin 3-D, anyone?
  • Previous by thread: Re: problem with MLGetReal64Array
  • Next by thread: Re: problem with MLGetReal64Array