質問

私はMathLinkに慣れており、コードを統合する前に、私はそれに慣れているために小さな答えを書いてみました。コードは次のとおりです(無関心な部分は省略され、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のマニュアルを検索する時間を過ごしましたが、その人は大きな混乱です!私がそれを間違っているところ?

役に立ちましたか?

解決

EnterTextPacket MathLinkパケットには、カーネルが包まれた結果を返します。 ReturnTextPacket MathLinkパケット。whileループの状態を変更してみてください。

while(((pkt=MLNextPacket(lp),pkt))&&(pkt!=RETURNTEXTPKT))
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top