我想写一个简单的mex函数。我有一个整数输入,这是我的对象的数量。 当我编译myMEX_1.cpp
并通过MATLAB与任何输入值调用它,我总是得到:使用mxGetPr vs mxGetData
Number请求的对象:= 0
但myMEX_2.cpp
工作正常,表明从MATLAB输入的数命令窗口。 myMEX_1.cpp
我的错误在哪里?
我的环境:MATLAB R2013a和Microsoft SDK 7.1编译器。
// myMEX_1.cpp
#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
char str11[100];
unsigned short frameCount;
//unsigned short *frameCountPtr;
frameCount = (*((unsigned short*)mxGetData(prhs[0])));
sprintf(str11, "Number of Requested Objects := %d:\n", frameCount);
mexPrintf(str11);
}
// myMEX_2.cpp
#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
char str11[100];
unsigned short frameCount;
double* dblPointer;
dblPointer = mxGetPr(prhs[0]);
frameCount = (unsigned short)(*dblPointer);
sprintf(str11, "Number of Requested Objects := %d:\n", frameCount);
mexPrintf(str11);
}
'mxGetPr'总是返回与输入参数类型无关的'* double'。 – GntS
@GmtK我认为,但只是检查出来。虽然你的代码可以工作,如果你真的*传递一个整数:'myMEX_1(uint16(1))' – Suever
函数原型在MATLAB帮助中作为'double * mxGetPr(const mxArray * pm);' – GntS