Re: C program and Mathematica
- To: mathgroup at yoda.physics.unc.edu
- Subject: Re: C program and Mathematica
- From: tgayley (Todd Gayley)
- Date: Thu, 10 Feb 1994 11:36:49 -0600
Tom Fister (tfister at cornea.mbvlab.wpafb.af.mil) writes:
>>From Tom Fister
>
>I would like to thank everyone who
>sent me help on the matrix printing
>problem. Now, I have another question.
>
>I am trying to install a c program
>into mathemtica. The program will
>return an integer list and a string.
>I can get it to return either an
>integer string or list but not both
>I would like to return a list in the form
>
> {{1,2,3},"teststring"}
>
>The C program is as follows
>
>
>int main(argc,argv)
> int argc;
> char *argv[];
>
> {
> return MLMain(argc,argv);
> }
>
>
>int test()
> {
> char string[100];
> int array[3];
>
> strcpy(string,"teststring");
>
> array[0]=1;
> array[1]=2;
> array[2]=3;
>
> MLPutIntegerList(stdlink,array,3);
> MLPutSting(stdlink,string);
> }
>
>
> And, I have created a .tm file. I am
> compiling using mcc.
The problem is that your external function does not return a list of two
things; it returns two things. A Mathematica function can only return one
thing. You need to manually wrap your integer list and string in a list.
Thus, your "putting" code should look like:
MLPutFunction(stdlink, "List", 2);
MLPutIntegerList(stdlink,array,3);
MLPutString(stdlink,string);
I presume also that you have used Manual as the :ReturnType: in your .tm file.
--Todd