2016-08-01 6 views
-1

でコンパイルしながら、私は、MATLAB MEXを使用してコンパイルしようが、私はこのエラーを受信し続ける:エラーMatlabのMEX

Warning: You are using gcc version "5.4.0-6ubuntu1~16.04.1)". The version 
    currently supported with MEX is "4.2.3". 
    For a list of currently supported compilers see: 
    http://www.mathworks.com/support/compilers/current_release/ 

In file included from descriptor.h:4:0, 
       from calc_shot.cpp:11: 
mesh.h: In function ‘double magnitude(const vec3d<T>&)’: 
mesh.h:106:9: error: ‘sqrt’ is not a member of ‘std’ 
    return std::sqrt((v1.x*v1.x) + (v1.y*v1.y) + (v1.z*v1.z)); 
     ^
In file included from calc_shot.cpp:11:0: 
descriptor.h: At global scope: 
descriptor.h:7:57: error: expected class-name before ‘{’ token 
class invalid_mesh_descriptor : public std::logic_error { 
                 ^
descriptor.h: In constructor ‘invalid_mesh_descriptor::invalid_mesh_descriptor()’: 
descriptor.h:9:57: error: expected class-name before ‘(’ token 
    explicit invalid_mesh_descriptor() : std::logic_error("Exception invalid_mesh_descriptor caught.") {} 
                 ^
descriptor.h:9:57: error: expected ‘{’ before ‘(’ token 
descriptor.h: In constructor ‘invalid_mesh_descriptor::invalid_mesh_descriptor(const string&)’: 
descriptor.h:10:70: error: expected class-name before ‘(’ token 
    invalid_mesh_descriptor(const std::string& msg) : std::logic_error("Exception invalid_mesh_descriptor caught: "+msg) {} 
                    ^
descriptor.h:10:70: error: expected ‘{’ before ‘(’ token 
descriptor.h: In function ‘std::ostream& operator<<(std::ostream&, const vec_descriptor<T>&)’: 
descriptor.h:123:45: error: no match for ‘operator<<’ (operand types are ‘std::ostream {aka std::basic_ostream<char>}’ and ‘const char [2]’) 
     for (size_t k=1; k < d.size(); ++k) s << " " << d(k); 
              ^
In file included from /usr/include/c++/5/string:52:0, 
       from descriptor.h:5, 
       from calc_shot.cpp:11: 
/usr/include/c++/5/bits/basic_string.h:5172:5: note: candidate: template<class _CharT, class _Traits, class _Alloc> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&) 
    operator<<(basic_ostream<_CharT, _Traits>& __os, 
    ^
/usr/include/c++/5/bits/basic_string.h:5172:5: note: template argument deduction/substitution failed: 
In file included from calc_shot.cpp:11:0: 
descriptor.h:123:48: note: mismatched types ‘const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>’ and ‘const char [2]’ 
     for (size_t k=1; k < d.size(); ++k) s << " " << d(k); 
               ^

    mex: compile of ' "calc_shot.cpp"' failed. 

私はLD_PRELOADで、このコードをコンパイルするために使用されるが、現時点では私は引数を覚えていません、どうすれば解決できますか?

+0

のように動作し、このコマンドを使用して

mex -v calc_shot.cpp shot_descriptor.cpp -DUSE_FLANN -I"C:\Program Files\flann\include" -I/usr/include/eigen3 

。余分なヘッダーを含める必要があるかもしれません。最初のもの、例えば 'mesh.h:106:9:error: 'sqrt'は 'std'のメンバーではありません。実際には#include 'が必要な理由が考えられます。このような他の問題もあるかもしれませんが、わかりません。 – patrik

+0

もう1つの例は 'descriptor.h:123:45:error: 'operator <<'と一致しません(オペランドタイプは 'std :: ostream {別名std :: basic_ostream 'と 'const char [2]'です) '。これはおそらく '#include ' – patrik

+0

が適切ですが、正しいパラメータを使用してコンパイルするのに使用しましたが、私はそれらを覚えていません。 – Luca

答えて

1

ソリューション:プログラムは、私はすべてのコンパイラは、ヘッダを同じように含まれていないことに気づいた魅力

関連する問題