Этот пример показывает, как передать строки файлу MEX. Пример revord.c
принимает вектор символа и возвращает символы в обратном порядке.
Чтобы видеть код, откройте revord.c
в Редакторе MATLAB®.
Функция шлюза, mexFunction
, создает струну до из входной переменной, prhs[0]
. Путем изоляции переменных типа mxArray
от вычислительной стандартной подпрограммы, revord
, можно постараться не вносить существенные изменения в оригинал C и Код С++.
Преобразуйте входной параметр, prhs[0]
к C-стилю представляет в виде строки input_buf
.
input_buf = mxArrayToString(prhs[0]);
Выделите память для выходного аргумента, output_buf
, строки C-стиля.
output_buf = mxCalloc(buflen, sizeof(char));
Размер выходного аргумента эквивалентен размеру входного параметра.
Вызовите вычислительную стандартную подпрограмму, revord
.
revord(input_buf, buflen, output_buf);
Преобразуйте вывод, output_buf
, к mxArray
и присвойте plhs[0]
.
plhs[0] = mxCreateString(output_buf);
Не выпускайте память для этой переменной, потому что это - выходной аргумент.
Функция mxArrayToString
, используемая, чтобы создать временную переменную input_buf
, выделяет память; используйте функцию mxFree
, чтобы выпустить память.
mxFree(input_buf);
Запустите следующие команды из командной строки MATLAB.
Создайте пример.
mex -v revord.c
Вызовите функцию.
x = 'hello world';
y = revord(x)
y = dlrow olleh