Я новичок в Mathlink, и прежде чем интегрировать его в свой код, я попытался написать небольшой REPL, чтобы привыкнуть к нему. Код выглядит следующим образом (ненужные части опущены, и извините за ужасную смесь C и C ++):
int main(int argc,char **argv)
{
init_and_openlink(argc,argv);
while(!feof(stdin))
{
int pkt;
char buf[1024];
if(!fgets(buf,1024,stdin))
continue;
MLPutFunction(lp,"EnterTextPacket",1);
MLPutString(lp,buf);
MLEndPacket(lp);
while(((pkt=MLNextPacket(lp),pkt))&&(pkt!=RETURNPKT))
{
MLNewPacket(lp);
if(MLError(lp))
return 1;
}
const char *result;
MLGetString(lp,&result);
printf("%s\n",result);
MLReleaseString(lp,result);
}
return 0;
}
но, похоже, не работает вообще. Я попытался заменить цикл while одной инструкцией MLNextPacket, но безрезультатно; Я часами искал документацию по Mathlink, но это большой беспорядок! Где я делаю это неправильно?