MathGroup Archive 2008

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

Search the Archive

problem with MLGetReal64Array

  • To: mathgroup at smc.vnet.net
  • Subject: [mg84725] problem with MLGetReal64Array
  • From: GS <vokaputs at gmail.com>
  • Date: Fri, 11 Jan 2008 22:03:51 -0500 (EST)

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: formula for a rotation matrix
  • Next by Date: Re: digital signal processing options?
  • Previous by thread: Re: formula for a rotation matrix
  • Next by thread: Re: problem with MLGetReal64Array