mxAssert
-macro를 matrix.h에 정의하여 mex가 완벽하게 컴파일되는 C++ 코드에 사용하고 있습니다. 나의 호출 된 mex 코드에서 어설 션이 위반되면이 어설 션은 내 프로그램이 충돌하지 않고 Matlab 자체를 손상시킵니다. 나는 무엇인가 놓치고 있습니까? 그 의도 된 행동인가? Matlab의 충돌 보고서를 볼 때, 그 원인은 matlab에서 mex 코드가 어설 션을 일으킨다 고 인식 할 수 있도록 내 mex 코드를 특정 방식으로 실행해야합니까? try-catch와 유사)? 아마도 mex 코드를 안전하게 중지하고 Matlab 프롬프트로 돌아갈 수있는 또 다른 방법이있을 것입니다.MEX 파일의 어설 션으로 인해 Matlab이 손상 될 수 있습니다.
미리 감사드립니다. 도움을 주시면 매우 감사하겠습니다!
편집 : 무릎에 내 MATLAB을 제공합니다 최소한의 예 : 내 시스템 (우분투 64)에
#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