我是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;
}但它似乎一点也不起作用。我曾尝试用一条MLNextPacket指令替换while循环,但无济于事;我花了几个小时搜索Mathlink文档,但那个文档太乱了!我哪里做错了?
发布于 2012-01-24 03:02:50
EnterTextPacket MathLink数据包将使内核返回封装在ReturnTextPacket MathLink数据包中的结果。尝试将while循环中的条件更改为:
while(((pkt=MLNextPacket(lp),pkt))&&(pkt!=RETURNTEXTPKT))https://stackoverflow.com/questions/8975409
复制相似问题