patrikhuber / 4dface

Real-time 3D face tracking and reconstruction from 2D video
https://www.4dface.io
Apache License 2.0
786 stars 248 forks source link

Eigen compilation errors on Ubuntu 16.10 #16

Closed codr1 closed 7 years ago

codr1 commented 7 years ago

Got a bunch of errors trying to compile. Any ideas?

[ 50%] Building CXX object CMakeFiles/4dface.dir/apps/4dface.cpp.o In file included from /usr/include/eigen3/Eigen/Core:387:0, from /home/vess/code/3d/experiments/4dface/4dface/external/eos/include/eos/fitting/blendshape_fitting.hpp:27, from /home/vess/code/3d/experiments/4dface/4dface/external/eos/include/eos/fitting/fitting.hpp:32, from /home/vess/code/3d/experiments/4dface/4dface/apps/4dface.cpp:24: /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h: In instantiation of ‘void Eigen::internal::call_assignment_no_alias(Dst&, const Src&, const Func&) [with Dst = Eigen::Matrix<float, -1, -1, 1>; Src = Eigen::Inverse<Eigen::ColPivHouseholderQR<Eigen::Matrix<float, -1, -1, 1> > >; Func = Eigen::internal::assign_op<float, float>]’: /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:721:41: required from ‘Derived& Eigen::PlainObjectBase::_set_noalias(const Eigen::DenseBase&) [with OtherDerived = Eigen::Inverse<Eigen::ColPivHouseholderQR<Eigen::Matrix<float, -1, -1, 1> > >; Derived = Eigen::Matrix<float, -1, -1, 1>]’ /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:531:19: required from ‘Eigen::PlainObjectBase::PlainObjectBase(const Eigen::DenseBase&) [with OtherDerived = Eigen::Inverse<Eigen::ColPivHouseholderQR<Eigen::Matrix<float, -1, -1, 1> > >; Derived = Eigen::Matrix<float, -1, -1, 1>]’ /usr/include/eigen3/Eigen/src/Core/Matrix.h:379:29: required from ‘Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::Matrix(const Eigen::EigenBase&) [with OtherDerived = Eigen::Inverse<Eigen::ColPivHouseholderQR<Eigen::Matrix<float, -1, -1, 1> > >; _Scalar = float; int _Rows = -1; int _Cols = -1; int _Options = 1; int _MaxRows = -1; int _MaxCols = -1]’ /home/vess/code/3d/experiments/4dface/4dface/external/superviseddescent/include/superviseddescent/regressors.hpp:294:53: required from here /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:785:49: error: ambiguous template instantiation for ‘struct Eigen::internal::Assignment<Eigen::Matrix<float, -1, -1, 1>, Eigen::Inverse<Eigen::ColPivHouseholderQR<Eigen::Matrix<float, -1, -1, 1> > >, Eigen::internal::assign_op<float, float>, Eigen::internal::Dense2Dense, void>’ Assignment<ActualDstTypeCleaned,Src,Func>::run(actualDst, src, func); ^ /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:823:8: note: candidates are: template<class DstXprType, class SrcXprType, class Functor, class Weak> struct Eigen::internal::Assignment<DstXprType, SrcXprType, Functor, Eigen::internal::Dense2Dense, Weak> [with DstXprType = Eigen::Matrix<float, -1, -1, 1>; SrcXprType = Eigen::Inverse<Eigen::ColPivHouseholderQR<Eigen::Matrix<float, -1, -1, 1> > >; Functor = Eigen::internal::assign_op<float, float>; Weak = void] struct Assignment<DstXprType, SrcXprType, Functor, Dense2Dense, Weak> ^ In file included from /usr/include/eigen3/Eigen/LU:35:0, from /usr/include/eigen3/Eigen/Dense:2, from /home/vess/code/3d/experiments/4dface/4dface/external/eos/include/eos/fitting/closest_edge_fitting.hpp:37, from /home/vess/code/3d/experiments/4dface/4dface/external/eos/include/eos/fitting/fitting.hpp:34, from /home/vess/code/3d/experiments/4dface/4dface/apps/4dface.cpp:24: /usr/include/eigen3/Eigen/src/LU/InverseImpl.h:290:8: note: template<class DstXprType, class XprType> struct Eigen::internal::Assignment<DstXprType, Eigen::Inverse, Eigen::internal::assign_op<typename DstXprType::Scalar, typename SrcXprType::Scalar>, Eigen::internal::Dense2Dense> [with DstXprType = Eigen::Matrix<float, -1, -1, 1>; XprType = Eigen::ColPivHouseholderQR<Eigen::Matrix<float, -1, -1, 1> >] struct Assignment<DstXprType, Inverse, internal::assign_op<typename Ds ^ In file included from /usr/include/eigen3/Eigen/QR:36:0, from /usr/include/eigen3/Eigen/Dense:4, from /home/vess/code/3d/experiments/4dface/4dface/external/eos/include/eos/fitting/closest_edge_fitting.hpp:37, from /home/vess/code/3d/experiments/4dface/4dface/external/eos/include/eos/fitting/fitting.hpp:34, from /home/vess/code/3d/experiments/4dface/4dface/apps/4dface.cpp:24: /usr/include/eigen3/Eigen/src/QR/ColPivHouseholderQR.h:620:8: note: template<class DstXprType, class MatrixType, class Scalar> struct Eigen::internal::Assignment<DstXprType, Eigen::Inverse<Eigen::ColPivHouseholderQR >, Eigen::internal::assign_op<Scalar, Scalar>, Eigen::internal::Dense2Dense> [with DstXprType = Eigen::Matrix<float, -1, -1, 1>; MatrixType = Eigen::Matrix<float, -1, -1, 1>; Scalar = float] struct Assignment<DstXprType, Inverse<ColPivHouseholderQR >, intern ^ In file included from /usr/include/eigen3/Eigen/Core:387:0, from /home/vess/code/3d/experiments/4dface/4dface/external/eos/include/eos/fitting/blendshape_fitting.hpp:27, from /home/vess/code/3d/experiments/4dface/4dface/external/eos/include/eos/fitting/fitting.hpp:32, from /home/vess/code/3d/experiments/4dface/4dface/apps/4dface.cpp:24: /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:785:49: error: incomplete type ‘Eigen::internal::Assignment<Eigen::Matrix<float, -1, -1, 1>, Eigen::Inverse<Eigen::ColPivHouseholderQR<Eigen::Matrix<float, -1, -1, 1> > >, Eigen::internal::assign_op<float, float>, Eigen::internal::Dense2Dense, void>’ used in nested name specifier Assignment<ActualDstTypeCleaned,Src,Func>::run(actualDst, src, func); ^ CMakeFiles/4dface.dir/build.make:62: recipe for target 'CMakeFiles/4dface.dir/apps/4dface.cpp.o' failed make[2]: [CMakeFiles/4dface.dir/apps/4dface.cpp.o] Error 1 CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/4dface.dir/all' failed make[1]: [CMakeFiles/4dface.dir/all] Error 2 Makefile:149: recipe for target 'all' failed make: *** [all] Error 2

patrikhuber commented 7 years ago

Hi,

This looks like all Eigen errors, nothing to do in particular with 4dface or eos. It looks like your 4dface is using the eos in external/ so all should be fine. Can you confirm that you cloned this repo with all submodules and that you did not make any modifications to it?

I'm compiling eos regularly in Ubuntu 16.04 so I really don't get why you're getting errors. It seems in fact they happen at the first point where Eigen is included, blendshape_fitting.hpp line 2, as can be seen in your error message. So it all looks like a problem with Eigen on your system.

codr1 commented 7 years ago

I did install the sub modules (I hadn't at first and immediately had problems in landmarks.hpp).

I rebuilt the system with 14.04 and all was right with the world...

I was using 16.10 if that makes any difference. As I look at it - they all use different versions of that package...

I may try 16.04 later and will let you know.

On Mar 28, 2017 17:25, "Patrik Huber" notifications@github.com wrote:

Hi,

This looks like all Eigen errors, nothing to do in particular with 4dface or eos. It looks like your 4dface is using the eos in external/ so all should be fine. Can you confirm that you cloned this repo with all submodules and that you did not many any modifications to it?

I'm compiling eos regularly in Ubuntu 16.04 so I really don't get why you're getting errors. It seems in fact they happen at the first point where Eigen is included, blendshape_fitting.hpp line 2, as can be seen in your error message. So it all looks like a problem with Eigen.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/patrikhuber/4dface/issues/16#issuecomment-289909771, or mute the thread https://github.com/notifications/unsubscribe-auth/AHdmzbhkFJzdhk5xiS3fJYjSeq-_REaNks5rqXrYgaJpZM4Mr2yc .

patrikhuber commented 7 years ago

I see, I don't think I've ever tried 16.10! So it's indeed possible that there is a weird problem with Eigen there. On 16.04, it should really be fine.

Actually, if you plan to do a project or any serious research or development, I recommend you clone and build the eos repository separately, and work with that. The newest eos version comes with a version of Eigen included, which should work on any system. 4dface is just a simple demo, and it hasn't been updated in a few months.

codr1 commented 7 years ago

FWIW - it worked fine in 16.04

If I have a chance to go to 16.10 later, I will get EOS and try it separately. But it won't be for a while since... it works :)

patrikhuber commented 7 years ago

Ok, cool, thanks for reporting back!