主要内容

在C MEX文件中传递字符串

此示例显示了如何将字符串传递给使用C矩阵API构建的MEX函数。这个例子Revord.C接受角色向量并以相反顺序返回字符。

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

相关话题