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

问题现象

image.png

解决方法

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]))

image.png

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

全部回答

暂无数据
暂无数据
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天