在MEX文件中的C中检索错误消息字符串

时间:2014-06-12 03:01:25

标签: matlab mex

mexCallMATLABWithTrap函数可以返回MException个对象。我可以在C中使用此对象(mxArray)做什么?特别是,是否可以从C代码中将消息字符串从mxChar中提取出来?

matrix API具有访问所有数据类型的功能,包括结构,对象。

1 个答案:

答案 0 :(得分:1)

我找到的一个解决方案是使用mexCallMATLAB调用getReport,并将异常对象传递给它。它将返回包含该消息的mxArray Char类型。

使用mexCallMATLABWithTrap来呼叫evalc的示例:

// cmd is an mxArray * of Char type; it's the input to evalc
mxArray *res;
err = mexCallMATLABWithTrap(1, &res, 1, &cmd, "evalc");
if (err != NULL) {
    // err is now an MException
    mxArray *msg;
    mexCallMATLAB(1, &msg, 1, &err, "getReport");
    // assert(mxIsChar(msg));
    const mxChar *str = mxGetChars(msg);
}

我无法解决的一个问题是消息字符串将包括:" evalc中的错误"似乎无论问题发生在哪里。