MathLink Sample Program Problems

*To*: mathgroup at yoda.physics.unc.edu*Subject*: MathLink Sample Program Problems*From*: ringgere at zapotec.math.byu.edu*Date*: Thu, 26 Mar 92 15:18:06 MST

Hello. I'm working with the Mathematica Kernel version 2.0 on a NeXT cube. The Mathematica.app directory is installed in /LocalApps. I have attempted to use the first two examples in a copy of the Wolfram publication "The MathLink Communication Standard" by Arkady Borkovsky. On the copy I received from a professor here in the math department, there is no indication of a publication number or date; however, the introduction does mention kernel version 2.0, so I assume that the document is reasonably recent. Here is the C program I am trying to use: ___________________________________________________________________ #include <stdio.h> #include "mathlink.h" /* Include the MathLink header file. */ main() { int i, j, sum; MLINK p; /* MathLink link descriptor. */ fprintf(stdout, "==>"); scanf("%d %d", &i, &j); p = MLOpen("math -packets -batchoutput"); /* Start Mathematica in packets mode. */ MLPutFunction(p, "Plus", 2); /* Send a Plus function that will have two arguments to Mathematica. */ MLPutInteger(p, i); /* Send the integer i. */ MLPutInteger(p, j); /* Send the integer j. */ MLEndPacket(p); /* Tell Mathematica you have finished sending the input packet. */ /* Mathematica has now received the expression Plus[i, j], and evaluates it. */ MLGetNext(p); /* Get the head of the ReturnPacket from Mathematica. */ MLGetInteger(p, &sum); /* Get an integer from the ReturnPacket, and store it in sum. */ fprintf(stdout, "sum = %d\n", sum); MLClose(p); /* End the Mathematica process. */ } /* main */ ___________________________________________________________________ And here is my Makefile: ___________________________________________________________________ MATHDIR = /LocalApps/Mathematica.app MATHINCLUDE = $(MATHDIR)/Library/Mathematica/MathLink/Includes MATHLIB = $(MATHDIR)/Kernel/MathLink OBJS = addinteger.o CFLAGS = -I$(MATHINCLUDE) addinteger: $(OBJS) cc -o addinteger $(OBJS) -L$(MATHLIB) -lML ___________________________________________________________________ Now, when I build the executable, I get the following responses: ___________________________________________________________________ cc -I/LocalApps/Mathematica.app/Library/Mathematica/MathLink/Includes -c addinteger.c addinteger.c: In function main: addinteger.c:13: warning: assignment of pointer from integer lacks a cast cc -o addinteger addinteger.o -L/LocalApps/Mathematica.app/Kernel/MathLink -lML /bin/ld: Undefined symbols: _MLOpen *** Exit 1 Stop. ___________________________________________________________________ When I peruse the "mathlink.h" header file, I find no declaration of the function MLOpen. I encounter similar problems with the second example in Mr. Borkovsky's document. Is the document I'm working with out of sync with my version of "mathlink.h" and the MathLink libraries? Any feedback would be appreciated. If your responses come to me directly, I will summarize the responses and post them on the group for the benefit of those who are interested. Thanks to all --Eric Ringger