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." > ************************************************************** >