【发布时间】:2014-06-12 03:01:24
【问题描述】:
mexCallMATLABWithTrap 函数可以返回一个MException 对象。我可以在 C 中使用这个对象 (mxArray) 做什么?特别是,是否可以从 C 代码中将消息字符串提取为 mxChar?
matrix API 具有访问所有数据类型的功能,包括结构、 对象。
【问题讨论】:
mexCallMATLABWithTrap 函数可以返回一个MException 对象。我可以在 C 中使用这个对象 (mxArray) 做什么?特别是,是否可以从 C 代码中将消息字符串提取为 mxChar?
matrix API 具有访问所有数据类型的功能,包括结构、 对象。
【问题讨论】:
我找到的一个解决方案是使用mexCallMATLAB 调用getReport,并将异常对象传递给它。它将返回包含消息的 Char 类型的 mxArray。
使用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 中的错误”,无论问题发生在哪里。
【讨论】: