Re: Problems using MathLink
- To: mathgroup at smc.vnet.net
- Subject: [mg95271] Re: Problems using MathLink
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Wed, 14 Jan 2009 05:51:04 -0500 (EST)
- References: <gkgq0p$48v$1@smc.vnet.net>
Hi,
you are sure that your array has the depth 3 and not
the dimension 3 x 3, and what is the third dimension
in a[3][3] ..
BTW, you never delete[] heads,dims.
If you wish to fill your main memory you should
use larger pieces of memory
that you don't recycle, you are faster done than.
Regards
Jens
Jonathan Yik wrote:
> Hi,
>
> I'm trying to write a subroutine in C++ that passes a rotation matrix to
> Mathematica through MathLink. The code compiles fine, but when I try to run
> the compiled program, I get a segfault at the point in the program where the
> subroutine is called. As far as I can tell, the fault occurs whenever the
> program calls MLPutRealArray or MLPutReal32Array.
>
> Here is my code for the subroutine:
>
> void rot(MLINK link, double theta)
> {
> char **heads, **HEAD;
> heads = new char*[3];
> heads[0] = "List";
> heads[1] = "List";
> heads[2] = "List";
> double a[3][3], *b;
> a[0][0] = cos(theta);
> a[0][1] = sin(theta);
> a[0][2] = 0;
> a[1][0] = - sin(theta);
> a[1][1] = cos(theta);
> a[1][2] = 0;
> a[2][0] = 0;
> a[2][1] = 0;
> a[2][2] = 1;
> long *dims, *D, depth;
> dims = new long[3];
> dims[0] = 3;
> dims[1] = 3;
> dims[2] = 3;
> MLPutRealArray(link, *a, dims, heads, 3);
> }
>
> Is there something in this code that I'm missing that causes the fault? Or
> is this a but in the ml32i3.dll file?
>
> Yours,
>
> Johnathan Yik