mxCreateNumericArray error: cannot convert from 'const size_t *' to 'const int *'
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
// memory for HOG features
int out[3];
out[0] = max(blocks[0]-2, 0);
out[1] = max(blocks[1]-2, 0);
out[2] = 27+4+1;
mxArray *mxfeat = mxCreateNumericArray(3, out, mxDOUBLE_CLASS, mxREAL);
double *feat = (double *)mxGetPr(mxfeat);
Matlab keeps reporting error:
>> compile
compiling features.cc
Building with 'Microsoft Visual C++ 2015 Professional'.
Error using mex
features.cc
E:\...\HOG\ihog-master\internal\features.cc(47): error C2440: 'initializing': cannot convert from
'const size_t *' to 'const int *'
E:\...\HOG\ihog-master\internal\features.cc(47): note: Types pointed to are unrelated; conversion
requires reinterpret_cast, C-style cast or function-style cast
E:\...\HOG\ihog-master\internal\features.cc(67): error C2664: 'mxArray
*mxCreateNumericArray_730(std::size_t,const size_t *,mxClassID,mxComplexity)': cannot convert argument 2 from 'int [3]' to 'const
size_t *'
E:\...\HOG\ihog-master\internal\features.cc(67): note: Types pointed to are unrelated; conversion
requires reinterpret_cast, C-style cast or function-style cast
Error in compile (line 5)
mex -O internal/features.cc -output internal/features
>> compile
compiling features.cc
Building with 'Microsoft Visual C++ 2015 Professional'.
Error using mex
features.cc
E:\...\HOG\ihog-master\internal\features.cc(47): error C2440: 'initializing': cannot convert from
'const size_t *' to 'const int *'
E:\...\HOG\ihog-master\internal\features.cc(47): note: Types pointed to are unrelated; conversion
requires reinterpret_cast, C-style cast or function-style cast
Error in compile (line 5)
mex -O internal/features.cc -output internal/features
>>
I have tried every means to change the type, but with no luck. Could you please give me some help to work around this? Thanks a lot!
1 Commento
Jan
il 27 Feb 2018
@zzzhhh: "I have followed a previous post to change int to mwSize" does not explain clearly, what you have done. Please post the code.
Risposta accettata
Jan
il 27 Feb 2018
Modificato: Jan
il 27 Feb 2018
According to the documentation, mxCreateNumericArray requires a const mwSize array as input for the dimensions:
mxArray *mxCreateNumericArray(mwSize ndim, const mwSize *dims,
mxClassID classid, mxComplexity ComplexFlag);
const mwSize out[3] = {max(blocks[0]-2, 0),
max(blocks[1]-2, 0),
27+4+1};
mxArray *mxfeat = mxCreateNumericArray(3, out, mxDOUBLE_CLASS, mxREAL);
UNTESTED I do not have access to a compiler currently.
5 Commenti
Jan
il 28 Feb 2018
qzzzhhh: You are welcome. We had several equivalent threads here, where assumptions about int, mwSize and size_t let the compilation fail or even worse the code crash. In some cases I was convinced also, that an int should work, but after using mwSize and size_t the code worked reliably.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su MATLAB Compiler in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!