Skip to content

Known Issues and fix

ShunChengWu edited this page Aug 13, 2021 · 1 revision

Eigen

  • Bugs about invoke_result: build/include/eigen3/Eigen/src/Core/util/Meta.h:617:25: error: ‘invoke_result’ in namespace ‘std’ does not name a template type

    • This is a bug caused by not compiling with c++17. However, although the CMAKE_CXX_STANDARD flag is 17 in the CMakeList.txt, the bug still exists. The probable solution is to comment these lines in the head files, e.g., when compiling, change the code from

      #if EIGEN_HAS_STD_INVOKE_RESULT
      template<typename F, typename... ArgTypes>
      struct invoke_result {
         typedef typename std::invoke_result<F, ArgTypes...>::type type1;
         typedef typename remove_all<type1>::type type;
       };
       #elif EIGEN_HAS_CXX11
       template<typename F, typename... ArgTypes>
       struct invoke_result {
         typedef typename result_of<F(ArgTypes...)>::type type1;
         typedef typename remove_all<type1>::type type;
       };
       #else
       template<typename F, typename ArgType0 = void, typename ArgType1 = void, typename ArgType2 = void>
       struct invoke_result {
         typedef typename result_of<F(ArgType0, ArgType1, ArgType2)>::type type1;
         typedef typename remove_all<type1>::type type;
       };
      

      to

      /*#if EIGEN_HAS_STD_INVOKE_RESULT
      template<typename F, typename... ArgTypes>
      struct invoke_result {
         typedef typename std::invoke_result<F, ArgTypes...>::type type1;
         typedef typename remove_all<type1>::type type;
       };*/
       #if EIGEN_HAS_CXX11
       template<typename F, typename... ArgTypes>
       struct invoke_result {
         typedef typename result_of<F(ArgTypes...)>::type type1;
         typedef typename remove_all<type1>::type type;
       };
       #else
       template<typename F, typename ArgType0 = void, typename ArgType1 = void, typename ArgType2 = void>
       struct invoke_result {
         typedef typename result_of<F(ArgType0, ArgType1, ArgType2)>::type type1;
         typedef typename remove_all<type1>::type type;
       };
      

      You can do the same thing in other files when this bug emerges.

  • If the bugs related to Eigen3 still exist, it may be a good idea to compile Eigen from source.

Freetype2

  • Bugs about freetype2 (I guess it may be caused by HarfBuzz), the error may emerge as: SceneGraphFusion/build/external/FreeType2/src/autofit/afscript.h:35:11: error: ‘HB_SCRIPT_ADLAM’ undeclared here (not in a function) and SceneGraphFusion/build/external/FreeType2/src/autofit/afscript.h:278:11: error: ‘HB_SCRIPT_OSAGE’ undeclared here (not in a function)

    • The temporary solution is to find out the associated lines in these head files and comment them. Another head file is afstyle.h.

3RScan.json and objects.json

  • When running the executable file, you should put the 3RScan.json and objects.json(from 3DSSG) under the correct directory. E.g., if the --pth_in is scans/sequence_idxxxx/sequence/, you should put these two files under scans/

Acknowledgement

The issues and fixed are provided by Kenneth-Wong

Clone this wiki locally