- Check if the template specialization for the "wrap_array" is declared within the same namespace as its original template declaration.
- If the specialization is intended to be in the "MatlabParamParser" namespace, you might need to wrap the specialization with the appropriate namespace declaration:
Issue generating mex file for librealsense
조회 수: 3 (최근 30일)
이전 댓글 표시
Hello,
I have been facing issues generating a mex file from librealsense_mex.cpp. My setup has MEX configured to use 'MinGW64 Compiler (C++)' for C++ language compilation. Everything is in the correct paths but I get large amount of error which appear to be due to compilation? Inserting some below.
Appreciate any help
In file included from C:\Users\Silicon
Synapse\Downloads\librealsense-master\librealsense-master\wrappers\matlab\MatlabParamParser.h:340:0,
from C:\Users\Silicon Synapse\Downloads\librealsense-master\librealsense-master\wrappers\matlab\librealsense_mex.cpp:1:
C:\Users\Silicon Synapse\Downloads\librealsense-master\librealsense-master\wrappers\matlab\types.h:229:126: error: specialization of
'template<class T> typename std::enable_if<((! std::integral_constant<bool, ((std::is_arithmetic<_Tp>::value ||
std::is_pointer<_Tp>::value) || std::is_enum<_Tp>::value)>::value) && (! std::integral_constant<bool,
MatlabParamParser::traits_trampoline::detector<T>::use_cells>::value)), mxArray_tag*>::type MatlabParamParser::wrap_array(const T*,
size_t)' in different namespace [-fpermissive]
template <> mxArray* MatlabParamParser::wrap_array<rs2::texture_coordinate>(const rs2::texture_coordinate* var, size_t length)
^
In file included from C:\Users\Silicon
Synapse\Downloads\librealsense-master\librealsense-master\wrappers\matlab\librealsense_mex.cpp:1:0:
C:\Users\Silicon Synapse\Downloads\librealsense-master\librealsense-master\wrappers\matlab\MatlabParamParser.h:311:1: error: from
definition of 'template<class T> typename std::enable_if<((! std::integral_constant<bool, ((std::is_arithmetic<_Tp>::value ||
std::is_pointer<_Tp>::value) || std::is_enum<_Tp>::value)>::value) && (! std::integral_constant<bool,
MatlabParamParser::traits_trampoline::detector<T>::use_cells>::value)), mxArray_tag*>::type MatlabParamParser::wrap_array(const T*,
size_t)' [-fpermissive]
MatlabParamParser::wrap_array(const T* var, size_t length)
댓글 수: 0
답변 (1개)
Maneet Kaur Bagga
2024년 5월 2일
Hi,
As per my understanding the error encountered is about the template specialization for "MatlabParamParser::wrap_array<rs2::texture_coordinate>" being declared in a different namespace than its original template declaration as indicated by the "-fpermissive" flag in the error message, which suggests that the compiler expects the specialization to be declared within the same namespace as the original template.
The possible workaround for this could be:
namespace MatlabParamParser {
template <> mxArray* wrap_array<rs2::texture_coordinate>(const rs2::texture_coordinate* var, size_t length) {
// Implementation
}
}
Please refer to the following MATLAB Documentation for further understanding:
Hope this helps!
댓글 수: 0
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!