Re: problem with MLGetReal64Array
- To: mathgroup at smc.vnet.net
- Subject: [mg84783] Re: problem with MLGetReal64Array
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Mon, 14 Jan 2008 03:47:52 -0500 (EST)
- References: <fm9an9$ipe$1@smc.vnet.net>
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."
> **************************************************************
>