Closed oqilipo closed 8 years ago
You can skip cork if you define IGL_NO_CORK
. Cork is an alternative to
libigl's booleans that is faster but less robust.
On Tue, Apr 19, 2016 at 11:06 AM, oqilipo notifications@github.com wrote:
Hi again ;-)
Now I'm trying to mex mesh_boolean.cpp. But the cork.lib is missing. Do I have use cmake to create a VS project and build it: C:\dev\libigl\external\cork\Makefile Or do I have to compile the VS project in: C:\dev\libigl\external\cork\win\wincork
Thank you
— You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub https://github.com/alecjacobson/gptoolbox/issues/12
Like this?
LIBIGL_FLAGS='-IGL_NO_CORK';
Thanks
I think it should be -DIGL_NO_CORK
On Tuesday, 19 April 2016, oqilipo notifications@github.com wrote:
Like this?
LIBIGL_FLAGS='-IGL_NO_CORK';
Thanks
— You are receiving this because you commented. Reply to this email directly or view it on GitHub https://github.com/alecjacobson/gptoolbox/issues/12#issuecomment-212025665
The exclusion of Cork seems to work, but unfortunately there are some compiling errors:
Matlab Code: mesh_boolean_compile_window.m
arch = '64';
msvc = '12';
path_to_boost='C:\dev\boost';
boost_version = '1_58';
path_to_cgal='C:\dev\CGAL';
cgal_version='4.8';
path_to_eigen='C:\dev\eigen';
path_to_libigl='C:\dev\libigl';
path_to_gmp = 'C:\dev\CGAL\auxiliary\gmp';
MEXOPTS={'-v','-largeArrayDims','-DMEX'};
MSSE42='CXXFLAGS=$CXXFLAGS -msse4.2';
STDCPP11='CXXFLAGS=$CXXFLAGS -std=c++11';
BOOST_INC=sprintf('-I%s',path_to_boost);
BOOST_LIB=strsplit(sprintf('-L%s/lib%s-msvc-%s.0 -lboost_thread-vc%s0-mt-%s.lib -lboost_system-vc%s0-mt-%s.lib',...
path_to_boost, arch, msvc, msvc,boost_version, msvc,boost_version));
CGAL_INC=sprintf('-I%s/include',path_to_cgal);
CGAL_LIB=strsplit(sprintf('-L%s/lib -lCGAL-vc%s0-mt-%s.lib -lCGAL_Core-vc%s0-mt-%s.lib',...
path_to_cgal, msvc,cgal_version, msvc,cgal_version));
CGAL_FLAGS='CXXFLAGS=\$CXXFLAGS -frounding-math';
EIGEN_INC=sprintf('-I%s/',path_to_eigen);
GMP_INC=sprintf('-I%s/include',path_to_gmp);
GMP_LIB=strsplit(sprintf('-L%s/lib -llibgmp-10.lib -llibmpfr-4.lib',path_to_gmp));
LIBIGL_INC=sprintf('-I%s/include',path_to_libigl);
LIBIGL_FLAGS='-DIGL_SKIP';
LIBIGL_LIB={'-DIGL_SKIP'};
LIBIGL_LIBMATLAB='-DIGL_SKIP';
LIBIGL_LIBCGAL='-DIGL_SKIP';
LIBIGL_LIBCORK='-DIGL_NO_CORK';
LIBIGL_BASE={LIBIGL_INC,LIBIGL_FLAGS,LIBIGL_LIB{:},LIBIGL_LIBMATLAB};
mex( ...
MEXOPTS{:}, MSSE42, STDCPP11, ...
LIBIGL_BASE{:},EIGEN_INC, ...
CGAL_INC,CGAL_LIB{:},CGAL_FLAGS, ...
LIBIGL_LIBCGAL, LIBIGL_LIBCORK, ...
BOOST_INC,BOOST_LIB{:}, ...
GMP_INC, GMP_LIB{:},...
'mesh_boolean.cpp');
error C2780
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(900) : error C2780: 'void igl::unique(const
Eigen::PlainObjectBase<Derived> &,Eigen::PlainObjectBase<DerivedFA> &)' : expects 2 arguments - 4 provided
c:\dev\libigl\include\igl\unique.h(49) : see declaration of 'igl::unique'
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(868) : while compiling class template member
function 'void
igl::copyleft::cgal::SelfIntersectMesh<Kernel,DerivedV,DerivedF,DerivedVV,DerivedFF,DerivedIF,DerivedJ,DerivedIM>::process_intersecting_boxes(void)'
with
[
DerivedV=Eigen::Matrix<double,-1,-1,0,-1,-1>
, DerivedF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedVV=Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>
, DerivedFF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedIF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedJ=Eigen::Matrix<int,-1,1,0,-1,1>
, DerivedIM=Eigen::Matrix<int,-1,1,0,-1,1>
]
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(398) : see reference to function template
instantiation 'void
igl::copyleft::cgal::SelfIntersectMesh<Kernel,DerivedV,DerivedF,DerivedVV,DerivedFF,DerivedIF,DerivedJ,DerivedIM>::process_intersecting_boxes(void)'
being compiled
with
[
DerivedV=Eigen::Matrix<double,-1,-1,0,-1,-1>
, DerivedF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedVV=Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>
, DerivedFF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedIF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedJ=Eigen::Matrix<int,-1,1,0,-1,1>
, DerivedIM=Eigen::Matrix<int,-1,1,0,-1,1>
]
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(326) : while compiling class template member
function
'igl::copyleft::cgal::SelfIntersectMesh<Kernel,DerivedV,DerivedF,DerivedVV,DerivedFF,DerivedIF,DerivedJ,DerivedIM>::SelfIntersectMesh(const
Eigen::PlainObjectBase<Eigen::Matrix<double,-1,-1,0,-1,-1>> &,const
Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>> &,const
igl::copyleft::cgal::RemeshSelfIntersectionsParam
&,Eigen::PlainObjectBase<Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>> &)'
with
[
DerivedV=Eigen::Matrix<double,-1,-1,0,-1,-1>
, DerivedF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedVV=Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>
, DerivedFF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedIF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedJ=Eigen::Matrix<int,-1,1,0,-1,1>
, DerivedIM=Eigen::Matrix<int,-1,1,0,-1,1>
]
c:\dev\libigl\include\igl\copyleft\cgal\remesh_self_intersections.cpp(59) : see reference to function
template instantiation
'igl::copyleft::cgal::SelfIntersectMesh<Kernel,DerivedV,DerivedF,DerivedVV,DerivedFF,DerivedIF,DerivedJ,DerivedIM>::SelfIntersectMesh(const
Eigen::PlainObjectBase<Eigen::Matrix<double,-1,-1,0,-1,-1>> &,const
Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>> &,const
igl::copyleft::cgal::RemeshSelfIntersectionsParam
&,Eigen::PlainObjectBase<Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>> &)' being compiled
with
[
DerivedV=Eigen::Matrix<double,-1,-1,0,-1,-1>
, DerivedF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedVV=Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>
, DerivedFF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedIF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedJ=Eigen::Matrix<int,-1,1,0,-1,1>
, DerivedIM=Eigen::Matrix<int,-1,1,0,-1,1>
]
error C2784
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(900) : error C2784: 'void igl::unique(const
Eigen::PlainObjectBase<Derived> &,Eigen::PlainObjectBase<DerivedFA> &,Eigen::PlainObjectBase<DerivedVB>
&,Eigen::PlainObjectBase<DerivedFB> &)' : could not deduce template argument for 'const
Eigen::PlainObjectBase<Derived> &' from 'initializer-list'
c:\dev\libigl\include\igl\unique.h(41) : see declaration of 'igl::unique'
error C2780
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(900) : error C2780: 'void igl::unique(const
std::vector<DerivedV,std::allocator<_Ty>> &,std::vector<DerivedV,std::allocator<_Ty>> &)' : expects 2 arguments - 4
provided
c:\dev\libigl\include\igl\unique.h(33) : see declaration of 'igl::unique'
error C2248
c:\dev\libigl\include\igl\copyleft\cgal\order_facets_around_edge.cpp(203) : error C2248:
'Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>>::PlainObjectBase' : cannot access protected member declared
in class 'Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>>'
c:\dev\eigen\eigen\src/Core/PlainObjectBase.h(457) : see declaration of
'Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>>::PlainObjectBase'
c:\dev\libigl\include\igl\copyleft\cgal\extract_cells.cpp(484) : see reference to function template
instantiation 'void
igl::copyleft::cgal::order_facets_around_edge<Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,1,0,-1,1>>(const
Eigen::PlainObjectBase<Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>> &,const
Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>> &,size_t,size_t,const
std::vector<int,std::allocator<_Ty>> &,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>> &,bool)' being
compiled
with
[
_Ty=int
]
c:\dev\libigl\include\igl\copyleft\cgal\extract_cells.cpp(129) : see reference to function template
instantiation 'size_t
igl::copyleft::cgal::extract_cells_single_component<Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,size_t,Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<int,-1,-1,0,-1,-1>>(const
Eigen::PlainObjectBase<Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>> &,const
Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>> &,const
Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>> &,const
Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>> &,const
std::vector<std::vector<size_t,std::allocator<_Ty>>,std::allocator<std::vector<_Ty,std::allocator<_Ty>>>>
&,const Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>> &)' being compiled
with
[
_Ty=size_t
]
c:\dev\eigen\eigen\src/Core/PlainObjectBase.h(457) : see declaration of
'Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>>::PlainObjectBase'
error C2899
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(902) : error C2899: typename cannot be used outside a
template declaration
c:\dev\libigl\include\igl\unique.h(49) : see declaration of 'igl::unique'
c:\dev\libigl\include\igl\unique.h(41) : see declaration of 'igl::unique'
c:\dev\libigl\include\igl\unique.h(33) : see declaration of 'igl::unique'
c:\dev\libigl\include\igl\unique.h(27) : see declaration of 'igl::unique'
Full log: mesh_boolean_compile_windows.txt
Thanks in advance
Hmmmm. Are you able to compile the libigl tutorial? What version of libigl, eigen, cgal do you have?
I don't have a windows machine to test on, but one thing you could try is replacing the line 902 in include/igl/copyleft/cgal/SelfIntersectMesh
[&](const typename DerivedF::Scalar& vi) {
with
[&](const typename DerivedF::Scalar vi) {
Though I don't know why windows would have a problem with that...
On Wed, Apr 20, 2016 at 6:06 AM, oqilipo notifications@github.com wrote:
The exclusion of Cork seems to work, but unfortunately there are some compiling errors:
Matlab Code: mesh_boolean_compile_window.m
arch = '64'; msvc = '12';
path_to_boost='C:\dev\boost'; boost_version = '1_58'; path_to_cgal='C:\dev\CGAL'; cgal_version='4.8'; path_to_eigen='C:\dev\eigen'; path_to_libigl='C:\dev\libigl'; path_to_gmp = 'C:\dev\CGAL\auxiliary\gmp';
MEXOPTS={'-v','-largeArrayDims','-DMEX'}; MSSE42='CXXFLAGS=$CXXFLAGS -msse4.2'; STDCPP11='CXXFLAGS=$CXXFLAGS -std=c++11';
BOOST_INC=sprintf('-I%s',path_to_boost); BOOST_LIB=strsplit(sprintf('-L%s/lib%s-msvc-%s.0 -lboost_thread-vc%s0-mt-%s.lib -lboost_system-vc%s0-mt-%s.lib',... path_to_boost, arch, msvc, msvc,boost_version, msvc,boost_version));
CGAL_INC=sprintf('-I%s/include',path_to_cgal); CGAL_LIB=strsplit(sprintf('-L%s/lib -lCGAL-vc%s0-mt-%s.lib -lCGAL_Core-vc%s0-mt-%s.lib',... path_to_cgal, msvc,cgal_version, msvc,cgal_version)); CGAL_FLAGS='CXXFLAGS=\$CXXFLAGS -frounding-math';
EIGEN_INC=sprintf('-I%s/',path_to_eigen);
GMP_INC=sprintf('-I%s/include',path_to_gmp); GMP_LIB=strsplit(sprintf('-L%s/lib -llibgmp-10.lib -llibmpfr-4.lib',path_to_gmp));
LIBIGL_INC=sprintf('-I%s/include',path_to_libigl); LIBIGL_FLAGS='-DIGL_SKIP'; LIBIGL_LIB={'-DIGL_SKIP'}; LIBIGL_LIBMATLAB='-DIGL_SKIP'; LIBIGL_LIBCGAL='-DIGL_SKIP'; LIBIGL_LIBCORK='-DIGL_NO_CORK'; LIBIGL_BASE={LIBIGL_INC,LIBIGL_FLAGS,LIBIGL_LIB{:},LIBIGL_LIBMATLAB};
mex( ... MEXOPTS{:}, MSSE42, STDCPP11, ... LIBIGL_BASE{:},EIGEN_INC, ... CGAL_INC,CGAL_LIB{:},CGAL_FLAGS, ... LIBIGL_LIBCGAL, LIBIGL_LIBCORK, ... BOOST_INC,BOOST_LIB{:}, ... GMP_INC, GMP_LIB{:},... 'mesh_boolean.cpp');
error C2780
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(900) : error C2780: 'void igl::unique(const Eigen::PlainObjectBase
&,Eigen::PlainObjectBase &)' : expects 2 arguments - 4 provided c:\dev\libigl\include\igl\unique.h(49) : see declaration of 'igl::unique' c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(868) : while compiling class template member function 'void igl::copyleft::cgal::SelfIntersectMesh<Kernel,DerivedV,DerivedF,DerivedVV,DerivedFF,DerivedIF,DerivedJ,DerivedIM>::process_intersecting_boxes(void)' with [ DerivedV=Eigen::Matrix<double,-1,-1,0,-1,-1> , DerivedF=Eigen::Matrix<int,-1,-1,0,-1,-1> , DerivedVV=Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1> , DerivedFF=Eigen::Matrix<int,-1,-1,0,-1,-1> , DerivedIF=Eigen::Matrix<int,-1,-1,0,-1,-1> , DerivedJ=Eigen::Matrix<int,-1,1,0,-1,1> , DerivedIM=Eigen::Matrix<int,-1,1,0,-1,1> ] c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(398) : see reference to function template instantiation 'void igl::copyleft::cgal::SelfIntersectMesh<Kernel,DerivedV,DerivedF,DerivedVV,DerivedFF,DerivedIF,DerivedJ,DerivedIM>::process_intersecting_boxes(void)' being compiled with [ DerivedV=Eigen::Matrix<double,-1,-1,0,-1,-1> , DerivedF=Eigen::Matrix<int,-1,-1,0,-1,-1> , DerivedVV=Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1> , DerivedFF=Eigen::Matrix<int,-1,-1,0,-1,-1> , DerivedIF=Eigen::Matrix<int,-1,-1,0,-1,-1> , DerivedJ=Eigen::Matrix<int,-1,1,0,-1,1> , DerivedIM=Eigen::Matrix<int,-1,1,0,-1,1> ] c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(326) : while compiling class template member function 'igl::copyleft::cgal::SelfIntersectMesh<Kernel,DerivedV,DerivedF,DerivedVV,DerivedFF,DerivedIF,DerivedJ,DerivedIM>::SelfIntersectMesh(const Eigen::PlainObjectBaseEigen::Matrix<double,-1,-1,0,-1,-1> &,const Eigen::PlainObjectBaseEigen::Matrix<int,-1,-1,0,-1,-1> &,const igl::copyleft::cgal::RemeshSelfIntersectionsParam &,Eigen::PlainObjectBaseEigen::Matrix<ExactScalar,-1,-1,0,-1,-1> &,Eigen::PlainObjectBaseEigen::Matrix<int,-1,-1,0,-1,-1> &,Eigen::PlainObjectBaseEigen::Matrix<int,-1,-1,0,-1,-1> &,Eigen::PlainObjectBaseEigen::Matrix<int,-1,1,0,-1,1> &,Eigen::PlainObjectBaseEigen::Matrix<int,-1,1,0,-1,1> &)' with [ DerivedV=Eigen::Matrix<double,-1,-1,0,-1,-1> , DerivedF=Eigen::Matrix<int,-1,-1,0,-1,-1> , DerivedVV=Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1> , DerivedFF=Eigen::Matrix<int,-1,-1,0,-1,-1> , DerivedIF=Eigen::Matrix<int,-1,-1,0,-1,-1> , DerivedJ=Eigen::Matrix<int,-1,1,0,-1,1> , DerivedIM=Eigen::Matrix<int,-1,1,0,-1,1> ] c:\dev\libigl\include\igl\copyleft\cgal\remesh_self_intersections.cpp(59) : see reference to function template instantiation 'igl::copyleft::cgal::SelfIntersectMesh<Kernel,DerivedV,DerivedF,DerivedVV,DerivedFF,DerivedIF,DerivedJ,DerivedIM>::SelfIntersectMesh(const Eigen::PlainObjectBaseEigen::Matrix<double,-1,-1,0,-1,-1> &,const Eigen::PlainObjectBaseEigen::Matrix<int,-1,-1,0,-1,-1> &,const igl::copyleft::cgal::RemeshSelfIntersectionsParam &,Eigen::PlainObjectBaseEigen::Matrix<ExactScalar,-1,-1,0,-1,-1> &,Eigen::PlainObjectBaseEigen::Matrix<int,-1,-1,0,-1,-1> &,Eigen::PlainObjectBaseEigen::Matrix<int,-1,-1,0,-1,-1> &,Eigen::PlainObjectBaseEigen::Matrix<int,-1,1,0,-1,1> &,Eigen::PlainObjectBaseEigen::Matrix<int,-1,1,0,-1,1> &)' being compiled with [ DerivedV=Eigen::Matrix<double,-1,-1,0,-1,-1> , DerivedF=Eigen::Matrix<int,-1,-1,0,-1,-1> , DerivedVV=Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1> , DerivedFF=Eigen::Matrix<int,-1,-1,0,-1,-1> , DerivedIF=Eigen::Matrix<int,-1,-1,0,-1,-1> , DerivedJ=Eigen::Matrix<int,-1,1,0,-1,1> , DerivedIM=Eigen::Matrix<int,-1,1,0,-1,1> ] error C2784
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(900) : error C2784: 'void igl::unique(const Eigen::PlainObjectBase
&,Eigen::PlainObjectBase &,Eigen::PlainObjectBase &,Eigen::PlainObjectBase &)' : could not deduce template argument for 'const Eigen::PlainObjectBase &' from 'initializer-list' c:\dev\libigl\include\igl\unique.h(41) : see declaration of 'igl::unique' error C2780
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(900) : error C2780: 'void igl::unique(const std::vector<DerivedV,std::allocator<_Ty>> &,std::vector<DerivedV,std::allocator<_Ty>> &)' : expects 2 arguments - 4 provided c:\dev\libigl\include\igl\unique.h(33) : see declaration of 'igl::unique'
error C2248
c:\dev\libigl\include\igl\copyleft\cgal\order_facets_around_edge.cpp(203) : error C2248: 'Eigen::PlainObjectBaseEigen::Matrix<int,-1,1,0,-1,1>::PlainObjectBase' : cannot access protected member declared in class 'Eigen::PlainObjectBaseEigen::Matrix<int,-1,1,0,-1,1>' c:\dev\eigen\eigen\src/Core/PlainObjectBase.h(457) : see declaration of 'Eigen::PlainObjectBaseEigen::Matrix<int,-1,1,0,-1,1>::PlainObjectBase' c:\dev\libigl\include\igl\copyleft\cgal\extract_cells.cpp(484) : see reference to function template instantiation 'void igl::copyleft::cgal::order_facets_around_edgeEigen::Matrix<ExactScalar,-1,-1,0,-1,-1,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,1,0,-1,1>>(const Eigen::PlainObjectBaseEigen::Matrix<ExactScalar,-1,-1,0,-1,-1> &,const Eigen::PlainObjectBaseEigen::Matrix<int,-1,-1,0,-1,-1> &,size_t,size_t,const std::vector<int,std::allocator<_Ty>> &,Eigen::PlainObjectBaseEigen::Matrix<int,-1,1,0,-1,1> &,bool)' being compiled with [ _Ty=int ] c:\dev\libigl\include\igl\copyleft\cgal\extract_cells.cpp(129) : see reference to function template instantiation 'size_t igl::copyleft::cgal::extract_cells_single_componentEigen::Matrix<ExactScalar,-1,-1,0,-1,-1,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,size_t,Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<int,-1,-1,0,-1,-1>>(const Eigen::PlainObjectBaseEigen::Matrix<ExactScalar,-1,-1,0,-1,-1> &,const Eigen::PlainObjectBaseEigen::Matrix<int,-1,-1,0,-1,-1> &,const Eigen::PlainObjectBaseEigen::Matrix<int,-1,1,0,-1,1> &,const Eigen::PlainObjectBaseEigen::Matrix<int,-1,-1,0,-1,-1> &,const std::vectorstd::vector<size_t,std::allocator<_Ty>,std::allocatorstd::vector<_Ty,std::allocator<_Ty>>> &,const Eigen::PlainObjectBaseEigen::Matrix<int,-1,1,0,-1,1> &,Eigen::PlainObjectBaseEigen::Matrix<int,-1,-1,0,-1,-1> &)' being compiled with [ _Ty=size_t ] c:\dev\eigen\eigen\src/Core/PlainObjectBase.h(457) : see declaration of 'Eigen::PlainObjectBaseEigen::Matrix<int,-1,1,0,-1,1>::PlainObjectBase'
error C2899
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(902) : error C2899: typename cannot be used outside a template declaration c:\dev\libigl\include\igl\unique.h(49) : see declaration of 'igl::unique' c:\dev\libigl\include\igl\unique.h(41) : see declaration of 'igl::unique' c:\dev\libigl\include\igl\unique.h(33) : see declaration of 'igl::unique' c:\dev\libigl\include\igl\unique.h(27) : see declaration of 'igl::unique'
Full log: mesh_boolean_compile_windows.txt https://github.com/alecjacobson/gptoolbox/files/227672/mesh_boolean_compile_windows.txt
Thanks in advance
— You are receiving this because you commented. Reply to this email directly or view it on GitHub https://github.com/alecjacobson/gptoolbox/issues/12#issuecomment-212363391
Hi Back on the other machine.
The tutorial of libigl works fine in 32bit as well as 64bit.
Version libigl: https://github.com/libigl/libigl/tree/95f7c79d4f71ca62a5a63e504ab7a0d85f3370c8 Eigen: https://github.com/RLovelett/eigen/tree/fd3fbf0993bdbd0b4b6857207ed04163f83bc783 CGAL: 4.8
I've replaced the line, but the errors stay the same:
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(900) : error C2780: 'void igl::unique(const
Eigen::PlainObjectBase<Derived> &,Eigen::PlainObjectBase<DerivedFA> &)' : expects 2 arguments - 4 provided
c:\dev\libigl\include\igl\unique.h(49) : see declaration of 'igl::unique'
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(868) : while compiling class template member
function 'void
igl::copyleft::cgal::SelfIntersectMesh<Kernel,DerivedV,DerivedF,DerivedVV,DerivedFF,DerivedIF,DerivedJ,DerivedIM>::process_intersecting_boxes(void)'
with
[
DerivedV=Eigen::Matrix<double,-1,-1,0,-1,-1>
, DerivedF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedVV=Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>
, DerivedFF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedIF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedJ=Eigen::Matrix<int,-1,1,0,-1,1>
, DerivedIM=Eigen::Matrix<int,-1,1,0,-1,1>
]
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(398) : see reference to function template
instantiation 'void
igl::copyleft::cgal::SelfIntersectMesh<Kernel,DerivedV,DerivedF,DerivedVV,DerivedFF,DerivedIF,DerivedJ,DerivedIM>::process_intersecting_boxes(void)'
being compiled
with
[
DerivedV=Eigen::Matrix<double,-1,-1,0,-1,-1>
, DerivedF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedVV=Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>
, DerivedFF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedIF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedJ=Eigen::Matrix<int,-1,1,0,-1,1>
, DerivedIM=Eigen::Matrix<int,-1,1,0,-1,1>
]
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(326) : while compiling class template member
function
'igl::copyleft::cgal::SelfIntersectMesh<Kernel,DerivedV,DerivedF,DerivedVV,DerivedFF,DerivedIF,DerivedJ,DerivedIM>::SelfIntersectMesh(const
Eigen::PlainObjectBase<Eigen::Matrix<double,-1,-1,0,-1,-1>> &,const
Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>> &,const
igl::copyleft::cgal::RemeshSelfIntersectionsParam
&,Eigen::PlainObjectBase<Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>> &)'
with
[
DerivedV=Eigen::Matrix<double,-1,-1,0,-1,-1>
, DerivedF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedVV=Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>
, DerivedFF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedIF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedJ=Eigen::Matrix<int,-1,1,0,-1,1>
, DerivedIM=Eigen::Matrix<int,-1,1,0,-1,1>
]
c:\dev\libigl\include\igl\copyleft\cgal\remesh_self_intersections.cpp(59) : see reference to function
template instantiation
'igl::copyleft::cgal::SelfIntersectMesh<Kernel,DerivedV,DerivedF,DerivedVV,DerivedFF,DerivedIF,DerivedJ,DerivedIM>::SelfIntersectMesh(const
Eigen::PlainObjectBase<Eigen::Matrix<double,-1,-1,0,-1,-1>> &,const
Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>> &,const
igl::copyleft::cgal::RemeshSelfIntersectionsParam
&,Eigen::PlainObjectBase<Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>> &)' being compiled
with
[
DerivedV=Eigen::Matrix<double,-1,-1,0,-1,-1>
, DerivedF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedVV=Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>
, DerivedFF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedIF=Eigen::Matrix<int,-1,-1,0,-1,-1>
, DerivedJ=Eigen::Matrix<int,-1,1,0,-1,1>
, DerivedIM=Eigen::Matrix<int,-1,1,0,-1,1>
]
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(900) : error C2784: 'void igl::unique(const
Eigen::PlainObjectBase<Derived> &,Eigen::PlainObjectBase<DerivedFA> &,Eigen::PlainObjectBase<DerivedVB>
&,Eigen::PlainObjectBase<DerivedFB> &)' : could not deduce template argument for 'const
Eigen::PlainObjectBase<Derived> &' from 'initializer-list'
c:\dev\libigl\include\igl\unique.h(41) : see declaration of 'igl::unique'
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(900) : error C2780: 'void igl::unique(const
std::vector<DerivedV,std::allocator<_Ty>> &,std::vector<DerivedV,std::allocator<_Ty>> &)' : expects 2 arguments - 4
provided
c:\dev\libigl\include\igl\unique.h(33) : see declaration of 'igl::unique'
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(900) : error C2784: 'void igl::unique(const
std::vector<DerivedV,std::allocator<_Ty>> &,std::vector<DerivedV,std::allocator<_Ty>>
&,std::vector<size_t,std::allocator<_Ty>> &,std::vector<_Ty,std::allocator<_Ty>> &)' : could not deduce template
argument for 'const std::vector<DerivedV,std::allocator<_Ty>> &' from 'initializer-list'
with
[
_Ty=size_t
]
c:\dev\libigl\include\igl\unique.h(27) : see declaration of 'igl::unique'
std::map<__int64,std::vector<std::pair<__int64,CGAL::Object>,std::allocator<std::pair<__int64,CGAL::Object>>>,std::less<_Kty>,std::allocator<std::pair<const
_Kty,std::vector<std::pair<__int64,CGAL::Object>,std::allocator<std::pair<__int64,CGAL::Object>>>>>>
&,const
std::map<std::pair<__int64,__int64>,std::vector<__int64,std::allocator<__int64>>,std::less<std::pair<__int64,__int64>>,std::allocator<std::pair<const
std::pair<__int64,__int64>,std::vector<__int64,std::allocator<__int64>>>>>
&,bool,Eigen::PlainObjectBase<Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>> &)' being compiled
with
[
Kernel_=CGAL::Epick
, _Ty=CGAL::Triangle_3<CGAL::Epick>
, _Kty=__int64
]
c:\dev\libigl\include\igl\copyleft\cgal\order_facets_around_edge.cpp(203) : error C2248:
'Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>>::PlainObjectBase' : cannot access protected member declared
in class 'Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>>'
c:\dev\eigen\eigen\src/Core/PlainObjectBase.h(478) : see declaration of
'Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>>::PlainObjectBase'
c:\dev\libigl\include\igl\copyleft\cgal\extract_cells.cpp(484) : see reference to function template
instantiation 'void
igl::copyleft::cgal::order_facets_around_edge<Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,1,0,-1,1>>(const
Eigen::PlainObjectBase<Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>> &,const
Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>> &,size_t,size_t,const
std::vector<int,std::allocator<_Ty>> &,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>> &,bool)'
being compiled
with
[
_Ty=int
]
c:\dev\libigl\include\igl\copyleft\cgal\extract_cells.cpp(129) : see reference to function template
instantiation 'size_t
igl::copyleft::cgal::extract_cells_single_component<Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,size_t,Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<int,-1,-1,0,-1,-1>>(const
Eigen::PlainObjectBase<Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>> &,const
Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>> &,const
Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>> &,const
Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>> &,const
std::vector<std::vector<size_t,std::allocator<_Ty>>,std::allocator<std::vector<_Ty,std::allocator<_Ty>>>>
&,const Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>> &)' being compiled
with
[
_Ty=size_t
]
c:\dev\eigen\eigen\src/Core/PlainObjectBase.h(478) : see declaration of
'Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>>::PlainObjectBase'
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(902) : error C2899: typename cannot be used outside a
template declaration
c:\dev\libigl\include\igl\unique.h(49) : see declaration of 'igl::unique'
c:\dev\libigl\include\igl\unique.h(41) : see declaration of 'igl::unique'
c:\dev\libigl\include\igl\unique.h(33) : see declaration of 'igl::unique'
c:\dev\libigl\include\igl\unique.h(27) : see declaration of 'igl::unique'
Thanks in advance
It's strange that the compiler can't figure this out.
Try replacing:
igl::unique({F(fa,0), F(fa,1), F(fa,2), F(fb,0), F(fb,1), F(fb,2)},
unique_vertices, tmp1, tmp2);
with
std::vector<typename DerivedF::Scalar> all_vertices;
all_vertices.push_back(F(fa,0));
all_vertices.push_back(F(fa,1));
all_vertices.push_back(F(fa,2));
all_vertices.push_back(F(fb,0));
all_vertices.push_back(F(fb,1));
all_vertices.push_back(F(fb,2));
igl::unique(all_vertices,unique_vertices, tmp1, tmp2);
Hello
Unfortunately two errors remain
error C2248
c:\dev\libigl\include\igl\copyleft\cgal\order_facets_around_edge.cpp(203) : error C2248:
'Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>>::PlainObjectBase' : cannot access protected member declared
in class 'Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>>'
c:\dev\eigen\eigen\src/Core/PlainObjectBase.h(478) : see declaration of
'Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>>::PlainObjectBase'
c:\dev\libigl\include\igl\copyleft\cgal\extract_cells.cpp(484) : see reference to function template
instantiation 'void
igl::copyleft::cgal::order_facets_around_edge<Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,1,0,-1,1>>(const
Eigen::PlainObjectBase<Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>> &,const
Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>> &,size_t,size_t,const
std::vector<int,std::allocator<_Ty>> &,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>> &,bool)'
being compiled
with
[
_Ty=int
]
c:\dev\libigl\include\igl\copyleft\cgal\extract_cells.cpp(129) : see reference to function template
instantiation 'size_t
igl::copyleft::cgal::extract_cells_single_component<Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,size_t,Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<int,-1,-1,0,-1,-1>>(const
Eigen::PlainObjectBase<Eigen::Matrix<ExactScalar,-1,-1,0,-1,-1>> &,const
Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>> &,const
Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>> &,const
Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>> &,const
std::vector<std::vector<size_t,std::allocator<_Ty>>,std::allocator<std::vector<_Ty,std::allocator<_Ty>>>>
&,const Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>>
&,Eigen::PlainObjectBase<Eigen::Matrix<int,-1,-1,0,-1,-1>> &)' being compiled
with
[
_Ty=size_t
]
c:\dev\eigen\eigen\src/Core/PlainObjectBase.h(478) : see declaration of
'Eigen::PlainObjectBase<Eigen::Matrix<int,-1,1,0,-1,1>>::PlainObjectBase'
error C289
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(910) : error C2899: typename cannot be used outside a
template declaration
Thank you
This first error doesn't make sense to me. You could try pasting it on the Eigen forum to get a better answer.
The second error is also strange. You could try omitting the word typename.
On Mon, Jun 6, 2016 at 5:18 AM, oqilipo notifications@github.com wrote:
Hello
Unfortunately two errors remain
error C2248
c:\dev\libigl\include\igl\copyleft\cgal\order_facets_around_edge.cpp(203) : error C2248: 'Eigen::PlainObjectBaseEigen::Matrix<int,-1,1,0,-1,1>::PlainObjectBase' : cannot access protected member declared in class 'Eigen::PlainObjectBaseEigen::Matrix<int,-1,1,0,-1,1>' c:\dev\eigen\eigen\src/Core/PlainObjectBase.h(478) : see declaration of 'Eigen::PlainObjectBaseEigen::Matrix<int,-1,1,0,-1,1>::PlainObjectBase' c:\dev\libigl\include\igl\copyleft\cgal\extract_cells.cpp(484) : see reference to function template instantiation 'void igl::copyleft::cgal::order_facets_around_edgeEigen::Matrix<ExactScalar,-1,-1,0,-1,-1,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,1,0,-1,1>>(const Eigen::PlainObjectBaseEigen::Matrix<ExactScalar,-1,-1,0,-1,-1> &,const Eigen::PlainObjectBaseEigen::Matrix<int,-1,-1,0,-1,-1> &,size_t,size_t,const std::vector<int,std::allocator<_Ty>> &,Eigen::PlainObjectBaseEigen::Matrix<int,-1,1,0,-1,1> &,bool)' being compiled with [ _Ty=int ] c:\dev\libigl\include\igl\copyleft\cgal\extract_cells.cpp(129) : see reference to function template instantiation 'size_t igl::copyleft::cgal::extract_cells_single_componentEigen::Matrix<ExactScalar,-1,-1,0,-1,-1,Eigen::Matrix<int,-1,-1,0,-1,-1>,Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<int,-1,-1,0,-1,-1>,size_t,Eigen::Matrix<int,-1,1,0,-1,1>,Eigen::Matrix<int,-1,-1,0,-1,-1>>(const Eigen::PlainObjectBaseEigen::Matrix<ExactScalar,-1,-1,0,-1,-1> &,const Eigen::PlainObjectBaseEigen::Matrix<int,-1,-1,0,-1,-1> &,const Eigen::PlainObjectBaseEigen::Matrix<int,-1,1,0,-1,1> &,const Eigen::PlainObjectBaseEigen::Matrix<int,-1,-1,0,-1,-1> &,const std::vectorstd::vector<size_t,std::allocator<_Ty>,std::allocatorstd::vector<_Ty,std::allocator<_Ty>>> &,const Eigen::PlainObjectBaseEigen::Matrix<int,-1,1,0,-1,1> &,Eigen::PlainObjectBaseEigen::Matrix<int,-1,-1,0,-1,-1> &)' being compiled with [ _Ty=size_t ] c:\dev\eigen\eigen\src/Core/PlainObjectBase.h(478) : see declaration of 'Eigen::PlainObjectBaseEigen::Matrix<int,-1,1,0,-1,1>::PlainObjectBase'
error C289
c:\dev\libigl\include\igl\copyleft\cgal\SelfIntersectMesh.h(910) : error C2899: typename cannot be used outside a template declaration
Thank you
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/alecjacobson/gptoolbox/issues/12#issuecomment-223908003, or mute the thread https://github.com/notifications/unsubscribe/ACI0mbp633fb1NjPZqenNXlAaAgw-PATks5qI-X4gaJpZM4IKzN_ .
This seems to be an issue with VS2013. libigl requires VS2015 (see https://github.com/libigl/libigl/issues/285)
Hi,
I've tried again today and it compiled the mex file.
I've used the last stable release of eigen instead of the git mirror.
But then I've tested the function and Matlab crashed.
Greets
Hmmm. That will be hard to debug without the inputs. Can you include them?
On Wed, Jun 15, 2016 at 1:59 PM, oqilipo notifications@github.com wrote:
Hi,
I've tried again today and it compiled the mex file.
I used the last stable release of eigen instead of the git mirror.
But then I've tested the function and Matlab crashed.
Greets
— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/alecjacobson/gptoolbox/issues/12#issuecomment-226268733, or mute the thread https://github.com/notifications/unsubscribe/ACI0mR-g3MBQ9ETicOxRgWX_wbW3P2c0ks5qMD2FgaJpZM4IKzN_ .
Hi again ;-)
Now I'm trying to mex mesh_boolean.cpp. But the cork.lib is missing. Do I have use cmake to create a VS project and build it: C:\dev\libigl\external\cork\Makefile Or do I have to compile the VS project in: C:\dev\libigl\external\cork\win\wincork
Thank you