MathGroup Archive 2008

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

Search the Archive

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


  • Prev by Date: Re: Find / Replace in List problem ... v6.01
  • Next by Date: Re: Re: Creating a set from two other sets
  • Previous by thread: problem with MLGetReal64Array
  • Next by thread: Re: problem with MLGetReal64Array