나는 다음과 같은 test_mex MEX 기능이 있습니다mexGetArrayPtr이 예상대로 작동하지
void mexFunction(int nlhs, mxArray **plhs, int nrhs, const mxArray **prhs)
{
const mxArray* m_var = NULL;
if ((m_var = mexGetArrayPtr("a", "caller")) == NULL)
{
mexErrMsgTxt("oopsie");
}
}
그리고 다음 test.m 파일 :
function test()
a = 12345;
test_mex();
- 내가 그것을 실행하면 항상 실패하고 인쇄를 " oopsie ".
a
을 전역으로 설정하고 mex 함수의 "caller"문자열을 "global"로 변경하면 정상적으로 작동합니다.
내가 뭘 잘못하고 있니?
주 :
- 이 MATLAB의 긍정적 고대 버전이다 : 버전 6.1.0.450 릴리스 12.1
- mexGetArrayPtr는 mexGetVariablePtr의 이전 버전이며, 예 인수의 순서가 다른
코드가 mexGetArrayPtr과 호환되도록 mex 컴파일러에 '-V5' 옵션을 지정해야하지만 코드가 내 컴퓨터에서 예상대로 컴파일되어 실행됩니다. 저는 Matlab 7.5 (R2007b)를 사용하고 있습니다. 다시 컴파일하기 전에'clear mex'를 사용해보십시오. 그러나 이것이 문제라고 생각하지는 않습니다. –
@Itamar mex는 c이므로 일반 툴 체인으로 컴파일되고 스크립트는 mcc로 컴파일되므로 환경과 관련이 없다고 생각합니다. 또는 나는 무엇인가 놓치고 있냐? – nakki
완전성을 위해 버전을 언급했습니다. '일반 도구 체인'은 무엇입니까? 어떤 컴파일러가 'mex'에서 사용하도록 정의 되었습니까? –