Ошибка при установке файла .pro, с зависимостями Eigen, libigl от Debian - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь установить файл .pro, используя make на Debian-9. Это зависимости Qt5, GSL, libigl, Eigen и Boost, в которых установлены их последние версии. Я использовал следующее:

# cd build
# qmake -qt=qt5 ../qt/myfile.pro
# make

И вот ошибка, которую я получаю:

../libigl/include/igl/copyleft/boolean/../cgal/order_facets_around_edge.cpp:203:36: error: ‘Eigen::PlainObjectBase<Derived>::PlainObjectBase() [with Derived = Eigen::Matrix<int, -1, 1>]’ is protected within this context
   Eigen::PlainObjectBase<DerivedI> positive_order, negative_order;
                                    ^~~~~~~~~~~~~~
In file included from /usr/local/include/eigen3/Eigen/Core:457:0,
                 from ../libigl/include/igl/copyleft/boolean/mesh_boolean.h:15,
                 from ../src/mesh.cpp:12:
/usr/local/include/eigen3/Eigen/src/Core/PlainObjectBase.h:484:25: note: declared protected here
     EIGEN_STRONG_INLINE PlainObjectBase() : m_storage()
                         ^~~~~~~~~~~~~~~
In file included from ../libigl/include/igl/copyleft/boolean/../cgal/order_facets_around_edge.h:75:0,
                 from ../libigl/include/igl/copyleft/boolean/../cgal/propagate_winding_numbers.cpp:18,
                 from ../libigl/include/igl/copyleft/boolean/../cgal/propagate_winding_numbers.h:101,
                 from ../libigl/include/igl/copyleft/boolean/mesh_boolean.cpp:13,
                 from ../libigl/include/igl/copyleft/boolean/mesh_boolean.h:172,
                 from ../src/mesh.cpp:12:
../libigl/include/igl/copyleft/boolean/../cgal/order_facets_around_edge.cpp:203:52: error: ‘Eigen::PlainObjectBase<Derived>::PlainObjectBase() [with Derived = Eigen::Matrix<int, -1, 1>]’ is protected within this context
   Eigen::PlainObjectBase<DerivedI> positive_order, negative_order;
                                                    ^~~~~~~~~~~~~~
In file included from /usr/local/include/eigen3/Eigen/Core:457:0,
                 from ../libigl/include/igl/copyleft/boolean/mesh_boolean.h:15,
                 from ../src/mesh.cpp:12:
/usr/local/include/eigen3/Eigen/src/Core/PlainObjectBase.h:484:25: note: declared protected here
     EIGEN_STRONG_INLINE PlainObjectBase() : m_storage()
                         ^~~~~~~~~~~~~~~
Makefile:891: recipe for target 'mesh.o' failed

Может кто-нибудь, пожалуйста, помогите мне решить эту проблему здесь?

1 Ответ

0 голосов
/ 07 января 2020

Эта строка

Eigen::PlainObjectBase<DerivedI> positive_order, negative_order;

не скомпилируется. Возможно, он когда-то был скомпилирован для более старых версий Eigen - но это не то, как предполагается использовать типы Eigen-Base, поэтому он, вероятно, никогда не работал должным образом (это также причина, почему конструкторы Base были защищены в Eigen) ,

Однако эта строка не существует в самой последней order_facets_around_edge. cpp, поэтому вы, похоже, используете устаревшую версию libigl.

...