私は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のドキュメントを検索するのに何時間も費やしましたが、それは大きな混乱です。私はそれを間違っているところですか?