# using MathLink for communication with external program from my C program without Mathematica

I have a compiled program with MathLink. I want to use it from other C program, without Mathematica being involved at all. If i create my program with MathLink and connect to this external program, than i get number packets with number of functions: DefineExternal ["funcname[]" , "{ }" , 89 ] that registers these functions as external in Mathematica. How could i, from my C programm, call analog of Mathematica CallPacket[89,{}] function to call "funcname". Sending directly MLPutFunction(lp, "funcname") to this external application does not seems to be working, as, i suppose, it is intended to be used only for communication from external program with Mathematica, or?

-
Now that is an absolutely fascinating question. –  rcollyer Aug 15 '12 at 0:58
I must admit I was very unclear as to the meaning of your question until I saw your comment on the corresponding question on SO. Anyway, you cannot use MLPutFunction(lp, "funcname")--functions must be called by ordinal as MathLink programs don't have access to the Mathematica interpreter. Instead use MLPutFunction(lp, "CallPacket", nargs+1); MLPutInteger(lp, ord); /* put any arguments on the link here */ MLEndPacket(lp);. See the book MathLink: Network Programming with Mathematica by Chikara Miyaji and Paul Abbott for more information. –  Oleksandr R. Aug 15 '12 at 9:52
Sorry--the arguments should be in a List, not given as a sequence. (That's why this is just a comment: no time to give a properly debugged answer now. I'm sure you'll be able to figure it out for yourself--and when you get a working solution, feel free to self-answer.) –  Oleksandr R. Aug 15 '12 at 10:16

MLPutFunction(lp, "CallPacket", 2);