mex が完全にコンパイルする C++ コードで、matrix.h で定義mxAssert
された-macroを使用しています。呼び出された mex コードでアサーションに違反すると、このアサーションによってプログラムがクラッシュするのではなく、Matlab 自体がクラッシュします。私は何かを逃していますか?それは意図した動作ですか?Matlab のクラッシュ レポートを見ると、原因となるアサーションは私のコードによって発生したものとまったく同じです - 私の記述的な説明を含めて... Matlab が mex コードによって引き起こされたアサーションを認識できるように、特定の方法で mex コードを実行する必要がありますか (同様のキャッチしようとする)?おそらく、mex コードを安全に停止して Matlab プロンプトに戻る別の方法があります。
事前に感謝します。どんな助けでも大歓迎です!
EDIT:コードはコマンドでコンパイルされます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");
}
}