私は単純なmex関数を書こうとしています。私は自分のオブジェクトの数である整数の入力を持っています。 私はmyMEX_1.cpp
をコンパイルし、任意の入力値とMATLABでそれを呼び出すと、私は常に取得:要求されたオブジェクトのmxGetPrとmxGetDataの使用
数: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