Я пробовал этот пример под версией 6.1.0.450 на Solaris. Единственное, что мне пришлось изменить, это то, что
test_mex();
- это синтаксическая ошибка в старых версиях MATLAB, и мне нужно было изменить ее на
test_mex;
Это сработало (ошибок не было). Вы упоминаете, что вы «компилируете скрипт с помощью mcc» в своих комментариях. Вы имеете в виду, что вы компилируете функцию test.m с помощью MCC? Если я правильно помню, в R12.1 M-код, скомпилированный MCC, был превращен в C-код (для MEX или автономного исполняемого файла) и поэтому не имел «рабочего пространства» для доступа mexGetArrayPtr. По сути это было ограничением компилятора MCC. Я пытался
mcc -x test.m
(который создает MEX-файл, сгенерированный MCC) с описанным вами случаем «вызывающего» и «глобального», который вы видели и видели ошибку «oopsie» при использовании «caller» и отсутствие ошибки при использовании «global», как вы и описали.