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