What can the implicit type of mxGetPr return argument be?

1 回表示 (過去 30 日間)
Peter Cotton
Peter Cotton 2011 年 2 月 17 日
The following code returns a compiler warning because the pointer retrieved is of incompatible type.
mwSize countDims[2] = {nP,1};
plhs[1] = mxCreateNumericArray(ndim,countDims,mxINT64_CLASS,mxREAL);
int* count;
count = mxGetPr(plhs[1]);
This appears to be the case no matter what integer type I use in mxCreateNumericArray, or whether I use int, short etc.
  1 件のコメント
Peter Cotton
Peter Cotton 2011 年 3 月 17 日
Small suggestion for Mathworks. It would be nice if the mxGetData help was a little more explicit in regard to what is very much a standard procedure (extracting, casting etc) and alternatives. For example mxGetLogical might appear in the "See Also" for mxGetData. I wonder aloud if specialized mxGet's for integer types would be appreciated by users.

サインインしてコメントする。

採用された回答

James Tursa
James Tursa 2011 年 2 月 17 日
mxGetPr returns a (double *) type and is typically only used for double class variables, although most compilers will let you get away with just a warning if you convert it to another non-(void *) pointer type. Use the mxGetData function (and mxGetImagData for complex variables) for other data types, such as your int64 class variable. mxGetData and mxGetImagData return a (void *) type. You may want to cast the result explicitly. Also, using an int * will almost certainly not give you a 64-bit integer type on a typical compiler these days. You will need to use something else, like long long or int64_t.

その他の回答 (1 件)

Jan
Jan 2011 年 2 月 18 日
  1 件のコメント
Peter Cotton
Peter Cotton 2011 年 3 月 16 日
Thanks, very helpful.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeWrite C Functions Callable from MATLAB (MEX Files) についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by