我在matlab中使用mex获得了典型的cpp函数
#include "mex.h"
void func (int * rowvec, int * colvec, float * valvec, int * nnz){/*fill arguments*/}
void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
我在那里检查我有足够的输出变量可用
if(nlhs != 4) {
mexErrMsgIdAndTxt("MyToolbox:arrayProduct:nlhs",
"Four outputs required.");
}
此外,在这个函数中我声明了四个变量:
int *rowvec; /* 1st output array */
int *colvec; /* 2nd output array */
float *valvec; /* 3rd output array */
int *nnz; /* 4th output scalar */
将在函数中定义/填充它们:
func(rowvec, colvec, valvec, nnz) //arguments get filled with values
现在我想做那样的事情:
plhs[0] = rowvec;
plhs[1] = colvec;
plhs[2] = valvec;
plhs[3] = nnz;
遗憾的是,它抛出了四个可理解的错误,因为它们是两种不同的数据类型。错误是这样的:
cannot convert ‘int*’ to ‘mxArray* {aka mxArray_tag*}’ in assignment plhs[0] = rowvec;
我该如何解决这个问题?