mexCallMATLABWithTrap
函数可以返回MException
个对象。我可以在C中使用此对象(mxArray
)做什么?特别是,是否可以从C代码中将消息字符串从mxChar
中提取出来?
matrix API具有访问所有数据类型的功能,包括结构,除对象。
答案 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中的错误"似乎无论问题发生在哪里。