Я использую Ubuntu и пытаюсь использовать Octave для запуска сценария Matlab, который запускает mex-компилятор для некоторых файлов cpp https://github.com/yuxng/MDP_Tracking/blob/master/compile.m У меня уже установлено требование OpenCV, но я получаю некоторые ошибки.
В основном команды в октаве
compile
MOT_test
Ошибки, которые я получил от команды compile
, показаны ниже. Основываясь на моем поиске в Google и этой теме Создание файла Mex с Octave (проблема с обертками) , похоже, что проблема компиляции MDP Tracker остается нерешенной. У меня есть минуты опыта работы с мексами и октавами, поэтому я мало что могу сделать, кроме как спросить. Я надеюсь получить некоторую помощь здесь. Спасибо!
octave:4> compile
In file included from imResampleMex.cpp:7:0:
wrappers.hpp:22:24: error: ‘wrCalloc’ declared as an ‘inline’ variable
inline void* wrCalloc( size_t num, size_t size ) { return calloc(num,size); }
^~~~~~
wrappers.hpp:22:24: error: ‘size_t’ was not declared in this scope
wrappers.hpp:22:36: error: ‘size_t’ was not declared in this scope
inline void* wrCalloc( size_t num, size_t size ) { return calloc(num,size); }
^~~~~~
wrappers.hpp:22:48: error: expression list treated as compound expression in initializer [-fpermissive]
inline void* wrCalloc( size_t num, size_t size ) { return calloc(num,size); }
^
wrappers.hpp:23:24: error: ‘wrMalloc’ declared as an ‘inline’ variable
inline void* wrMalloc( size_t size ) { return malloc(size); }
^~~~~~
wrappers.hpp:23:24: error: ‘size_t’ was not declared in this scope
wrappers.hpp: In function ‘void wrFree(void*)’:
wrappers.hpp:24:44: error: ‘free’ was not declared in this scope
inline void wrFree( void * ptr ) { free(ptr); }
^
wrappers.hpp: At global scope:
wrappers.hpp:29:17: error: ‘size_t’ was not declared in this scope
void* alMalloc( size_t size, int alignment ) {
^~~~~~
wrappers.hpp:29:30: error: expected primary-expression before ‘int’
void* alMalloc( size_t size, int alignment ) {
^~~
wrappers.hpp:29:44: error: expression list treated as compound expression in initializer [-fpermissive]
void* alMalloc( size_t size, int alignment ) {
^
imResampleMex.cpp: In function ‘void resampleCoef(int, int, int&, int*&, int*&, T*&, int*, int)’:
imResampleMex.cpp:22:39: error: ‘alMalloc’ cannot be used as a function
wts = (T*)alMalloc(nMax*sizeof(T),16);
^
imResampleMex.cpp:23:43: error: ‘alMalloc’ cannot be used as a function
yas = (int*)alMalloc(nMax*sizeof(int),16);
^
imResampleMex.cpp:24:43: error: ‘alMalloc’ cannot be used as a function
ybs = (int*)alMalloc(nMax*sizeof(int),16);
^
imResampleMex.cpp: In function ‘void resample(T*, T*, int, int, int, int, int, T)’:
imResampleMex.cpp:49:43: error: ‘alMalloc’ cannot be used as a function
T *C = (T*) alMalloc((ha+4)*sizeof(T),16); for(y=ha; y<ha+4; y++) C[y]=0;
^
warning: mkoctfile exited with failure status
warning: called from
mkoctfile at line 171 column 5
mex at line 29 column 18
compile at line 17 column 2
Compilation finished.
octave:5>