Error compiling mex file ubuntu with armadillo library

조회 수: 1 (최근 30일)
Andrea Agosti
Andrea Agosti 2021년 9월 6일
Hi!
I am trying to compile a mex file on ubuntu starting from a cpp file using the armadillo library. However, I get this strange error when joining 3 vectors and when determining if a vertor is full of zeros.
Error using mex
/home/b8054452/Downloads/Copy_of_MEX_EXAMPLE_2/arma_test2.cpp: In function void mexFunction(int, mxArray**, int,
const mxArray**)’:
/home/b8054452/Downloads/Copy_of_MEX_EXAMPLE_2/arma_test2.cpp:107:41: error: no matching function for call to
join_horiz(arma::rowvec&, arma::rowvec&, arma::rowvec&)
rowvec out=join_horiz(vec1,vec2,vec3);
^
In file included from /usr/include/armadillo:493:0,
from /home/b8054452/Downloads/Copy_of_MEX_EXAMPLE_2/armaMex.hpp:21,
from /home/b8054452/Downloads/Copy_of_MEX_EXAMPLE_2/arma_test2.cpp:2:
/usr/include/armadillo_bits/fn_join.hpp:85:1: note: candidate: template<class T1, class T2> typename
arma::enable_if2<((arma::is_arma_type<T1>::value && arma::is_arma_type<T2>::value) && arma::is_same_type<typename
T1::elem_type, typename T2::elem_type>::value), const arma::Glue<T1, T2, arma::glue_join_rows> >::result
arma::join_horiz(const T1&, const T2&)
join_horiz(const T1& A, const T2& B)
^~~~~~~~~~
/usr/include/armadillo_bits/fn_join.hpp:85:1: note: template argument deduction/substitution failed:
/home/b8054452/Downloads/Copy_of_MEX_EXAMPLE_2/arma_test2.cpp:107:41: note: candidate expects 2 arguments, 3
provided
rowvec out=join_horiz(vec1,vec2,vec3);
^
In file included from /usr/include/armadillo:493:0,
from /home/b8054452/Downloads/Copy_of_MEX_EXAMPLE_2/armaMex.hpp:21,
from /home/b8054452/Downloads/Copy_of_MEX_EXAMPLE_2/arma_test2.cpp:2:
/usr/include/armadillo_bits/fn_join.hpp:219:1: note: candidate: template<class T1, class T2> const arma::SpGlue<T1,
T2, arma::spglue_join_rows> arma::join_horiz(const arma::SpBase<typename T1::elem_type, T1>&, const
arma::SpBase<typename T1::elem_type, T2>&)
join_horiz(const SpBase<typename T1::elem_type,T1>& A, const SpBase<typename T1::elem_type,T2>& B)
^~~~~~~~~~
/usr/include/armadillo_bits/fn_join.hpp:219:1: note: template argument deduction/substitution failed:
/home/b8054452/Downloads/Copy_of_MEX_EXAMPLE_2/arma_test2.cpp:107:41: note: arma::rowvec {aka
arma::Row<double>}is not derived from ‘const arma::SpBase<typename T1::elem_type, T1>
rowvec out=join_horiz(vec1,vec2,vec3);
^
/home/b8054452/Downloads/Copy_of_MEX_EXAMPLE_2/arma_test2.cpp:110:13: error: arma::rowvec {aka class
arma::Row<double>}has no member named ‘is_zero’; did you mean ‘is_row’?
if(vec1.is_zero()==true)
^~~~~~~
The strange thing is that when compiling it with windows everything works as supposed.
Any idea how to fix it?
THANKS!

답변 (0개)

카테고리

Help CenterFile Exchange에서 Write C Functions Callable from MATLAB (MEX Files)에 대해 자세히 알아보기

제품


릴리스

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by