在Matlab中,我有一个进程(一个使用calllib的数据采集,但这并不重要),它将指针(libpointer)返回给一个大型数组 . 我想在MEX文件中使用这些数组 . 如果我有一个libpointer X到这个数组,我怎么能在MEX文件中使用它?

当然,有可能将其分配给一个新的变量,比如

A = X.Value;

但我想这个任务将复制数组,我不想要的 .

所以我的问题是,有没有办法使用libpointer(=数组的地址)作为MEX函数的输入参数,并从MEX中的这个输入参数中检索值?由于prhs []应该是mxArray,我不知道它应该如何工作 .

任何帮助,将不胜感激!

Update 2014-08-11: 最小示例代码:

#include "mex.h"

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
    (void) plhs;
    mexPrintf("%d \n",prhs[0]); // gives back e.g. "7209090"
    mexPrintf("%p \n",prhs[0]); // gives back e.g. "00000142006E0082"
}

然后Matlab代码就像:

mex cfunction.c
pv = libpointer('doublePtr',112);
cfunction(pv)