此示例显示了如何将字符串传递给使用C矩阵API构建的MEX函数。这个例子Revord.C
接受角色向量并以相反顺序返回字符。
要查看代码,请打开Revord.C
在matlab中®编辑。
网关功能,mexfunction
,从输入变量创建C字符串,PRHS [0]
。通过隔离类型的变量mxarray
从计算子例程中Revord
,您可以避免对原始C和C ++代码进行重大更改。
转换输入参数PRHS [0]
到C风格的字符串input_buf
。
input_buf = mxArrayToString(prhs [0]);
为输出参数分配内存,output_buf
,一个C风格的字符串。
output_buf = mxcalloc(buflen,sizeof(char));
输出参数的大小等效于输入参数的大小。
调用计算子例程,Revord
。
vord(input_buf,buflen,output_buf);
转换输出,output_buf
,到一个mxarray
并分配PLHS [0]
。
PLHS [0] = mxCreateString(output_buf);
不要为此变量发布内存,因为它是输出参数。
这mxarraytostring
功能,用于创建临时性input_buf
变量,分配内存;使用mxfree
释放内存的功能。
mxfree(input_buf);
从MATLAB命令行中运行以下命令。
构建示例。
梅克斯-vRevord.C
调用功能。
x ='你好世界';y = revord(x)
y = dlrow olleh