나는 mexEvalString
을 사용하여 mex 내에서 실행하기가 쉽습니다. 그러나 어떤 명령에 대해서는 예외가 발생하므로 mexEvalStringWithTrap
을 사용하여 어떤 문제가 있는지 파악하려고합니다. 그러나 예외에서 문자열을 가져 오는 데 실패합니다.mxArray에 저장된 객체의 액세스 문자열 속성
기본적으로 객체에서 문자열을 가져 오는 중이므로 mxGetProperty
과 mxGetString
을 찾았지만이 코드는 작동하지 않습니다. 출력 identifier: (null)
mxGetN
반환 37
하지만 str
(mxGetString
어쩌면 결함 사용)에 문제가있는 것 같습니다
mxGetString
를 호출하기 전에
str
을 할당해야
/* ENTRY POINT */
void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
mxArray *except, *char_ident;
mwSize strlen;
char *str;
/* ARGUMENT VERIFICATION */
//...
// catch exception
except = mexEvalStringWithTrap("unknownfunction");
// get exception identifier
char_ident = mxGetProperty(except, 0, "identifier");
// get identifier string length
strlen = (mwSize)mxGetN(char_ident);
// get identifier string
mxGetString(char_ident, str, strlen+1);
// print identifier string
printf("identifier: %s\n", str);
mexEvalStringWithTrap("drawnow");
...
예, 'mxArrayToString'이 더 편리합니다. – embert