Re: a mathlink question

*To*: mathgroup at smc.vnet.net*Subject*: [mg89659] Re: a mathlink question*From*: Albert Retey <awnl at arcor.net>*Date*: Mon, 16 Jun 2008 06:42:42 -0400 (EDT)*References*: <g32q5m$c2t$1@smc.vnet.net>

GS wrote: > I would like to call a C-program from Mathematica. All the examples in > the MathLink tutorials (like AddTwo[i,j]) work like this: they are > called from Mathematica, are executed, send the result to Mathematica > and exit. > > I would like a C-program to not exit after the execution, and keep the > memory of the previous inputs. Say, I want an external C-program, to > be called as AddToPreviousSum[x]. When it is first called, it returns > x. When it is called the second time AddToPreviousSum[y], it returns x > +y. When it is called the third time AddToPreviousSum[z], it returns x > +y+z, and so on. > > How do I implement this in C using MathLink? Nothing special to do here, just don't think that MathLink is about running programms written in C but about including libraries of functions written in C which can be accessed from within Mathematica. In your C-Library you can do everything that you can do in C, e.g. use a global variable to store the sum of all calls in your example. You can also supply more than just one function per file/library, so you could also provide functions to reset the sum. Otherwise only when you do a Reinstall ( = Uninstall + Install ) the library is reloaded and the global variable is reset. I haven't tried this and haven't done any MathLink programming for a while but hope that I still remember this correctly... hth, albert