我正在使用mxAssert
-macro定义的matrix.h mex完美编译的C++代码。当我的被调用的mex代码违反断言时,这个断言不会导致我的程序崩溃,而是Matlab本身。我错过了什么吗?那是预期的行为? 当我看看Matlab的崩溃报告时,引起的断言与我的代码所引发的情况非常相似 - 包括我的描述性描述......我是否必须以某种方式运行我的mex代码,以便Matlab可以识别mex代码导致的断言类似于try-catch)? 也许还有另一种方法来安全地停止我的mex代码并返回到Matlab提示符。在MEX文件中断言会导致Matlab崩溃
预先感谢您的帮助,非常感谢!
编辑:代码编译与命令mex -v Temp.cpp -g
编辑:带来我的MATLAB屈服最小例如:
#include <matrix.h>
class Temp {
public:
Temp();
virtual ~Temp();
};
Temp::Temp() {
// TODO Auto-generated constructor stub
}
Temp::~Temp() {
// TODO Auto-generated destructor stub
}
extern "C" {
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
int foo = 10;
mxAssert(foo==11, "foo is not 10");
}
}
这不应该发生。断言失败会让你回到matlab命令行。如果它仍然失败,先尝试一个简单的最小化mex并发布代码。 – nimrodm
你能发表一些代码吗? – Nzbuu