Syslab中m调用c的接口函数传参为什么不支持int型?
技术分享
发布于 2025-07-22 15:02:21
查看 2过去315天
问题现象

解决方法
mxGetPr改用为mxGetData。.m文件传参传错了,prhs[0]里需要一个int数组,但[1,2,3]是double型。
修改test_c.c:
#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[],int nrhs, const mxArray *prhs[])
{
int* input = (int*)(mxGetData(prhs[0]));
mxArray *B = mxCreateNumericMatrix(2, 2,mxINT32_CLASS,mxINT32_CLASS);
int* out =(int*)(mxGetData(B));
out[0]=input[0];
out[1]=input[1];
plhs[0]= B;
}
启动M命令行窗口,输入代码运行:
mex test_c.c
loadmex("./test_c.mexdll") %linux: loadmex("./test_c.mexso")
x=test_c(int32([1,2,3]))

所属专栏:工具箱
产品信息:M语言兼容工具