【问题标题】:Retrieve error message string in C in MEX file在 MEX 文件中检索 C 中的错误消息字符串
【发布时间】:2014-06-12 03:01:24
【问题描述】:

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

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

【问题讨论】:

    标签: matlab mex


    【解决方案1】:

    我找到的一个解决方案是使用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 中的错误”,无论问题发生在哪里。

    【讨论】:

      猜你喜欢
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2011-01-12
      • 2011-01-31
      • 1970-01-01
      相关资源
      最近更新 更多