#274 Compile error with MeshLab latest SVN on Ubuntu

open
nobody
None
5
2015-02-22
2011-07-26
Radio King
No

cd meshlabplugins/filter_csg/ && make -f Makefile
make[1]: Entering directory '/home/username/meshlab/src/meshlabplugins/filter_csg'
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SCRIPT_LIB -DQT_XMLPATTERNS_LIB -DQT_XML_LIB -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4/QtXml -I/usr/include/qt4/QtXmlPatterns -I/usr/include/qt4/QtScript -I/usr/include/qt4 -I../.. -I../../../../vcglib -I../../external/glew-1.5.1/include -I/usr/X11R6/include -I. -o filter_csg.o filter_csg.cpp
In file included from filter_csg.cpp:29:
gmpfrac.h:5:20: error: mpirxx.h: file or directotry not found

and later on:

In file included from ../../../../vcglib/vcg/complex/algorithms/create/extended_marching_cubes.h:42,
from filter_csg.cpp:25:
../../../../vcglib/vcg/complex/algorithms/create/emc_lookup_table.h:38: warning: type qualifiers ignored on function return type
../../../../vcglib/vcg/complex/algorithms/create/emc_lookup_table.h:907: warning: type qualifiers ignored on function return type
In file included from filter_csg.cpp:29:
gmpfrac.h:7: error: ISO C++ forbids declaration of ‘mpq_class’ with no type
gmpfrac.h:7: error: expected ‘,’ or ‘...’ before ‘&’ token
gmpfrac.h: In function ‘long int floor(int)’:
gmpfrac.h:8: error: ‘mpz_class’ was not declared in this scope
gmpfrac.h:8: error: expected ‘;’ before ‘q’
gmpfrac.h:9: error: ‘q’ was not declared in this scope
gmpfrac.h:9: error: ‘x’ was not declared in this scope
gmpfrac.h:9: error: ‘mpz_fdiv_q’ was not declared in this scope
gmpfrac.h: At global scope:
gmpfrac.h:7: warning: unused parameter ‘mpq_class’
gmpfrac.h:13: error: ISO C++ forbids declaration of ‘mpq_class’ with no type
gmpfrac.h:13: error: expected ‘,’ or ‘...’ before ‘&’ token
gmpfrac.h: In function ‘long int ceil(int)’:
gmpfrac.h:14: error: ‘mpz_class’ was not declared in this scope
gmpfrac.h:14: error: expected ‘;’ before ‘q’
gmpfrac.h:15: error: ‘q’ was not declared in this scope
gmpfrac.h:15: error: ‘x’ was not declared in this scope
gmpfrac.h:15: error: ‘mpz_cdiv_q’ was not declared in this scope
gmpfrac.h: At global scope:
gmpfrac.h:13: warning: unused parameter ‘mpq_class’
gmpfrac.h:19: error: ISO C++ forbids declaration of ‘mpq_class’ with no type
gmpfrac.h:19: error: expected ‘,’ or ‘...’ before ‘&’ token
gmpfrac.h: In function ‘double toFloat(int)’:
gmpfrac.h:20: error: ‘x’ was not declared in this scope
gmpfrac.h: At global scope:
gmpfrac.h:19: warning: unused parameter ‘mpq_class’
gmpfrac.h:23: error: ‘mpq_class’ does not name a type
filter_csg.cpp: In member function ‘virtual bool FilterCSG::applyFilter(QAction, MeshDocument&, RichParameterSet&, bool ()(int, const char))’:
filter_csg.cpp:131: error: ‘mpq_class’ was not declared in this scope
filter_csg.cpp:131: error: template argument 1 is invalid
filter_csg.cpp:131: error: invalid type in declaration before ‘;’ token
In file included from filter_csg.cpp:30:
intercept.h: At global scope:
intercept.h: In instantiation of ‘vcg::intercept::InterceptVolume<int>’:
filter_csg.cpp:136: instantiated from here
intercept.h:395: error: ‘int’ is not a class, struct, or union type
intercept.h:396: error: ‘int’ is not a class, struct, or union type
intercept.h:397: error: ‘int’ is not a class, struct, or union type
intercept.h:408: error: ‘int’ is not a class, struct, or union type
intercept.h:519: error: ‘int’ is not a class, struct, or union type
intercept.h: In instantiation of ‘vcg::intercept::InterceptSet3<int>’:
filter_csg.cpp:136: instantiated from here
intercept.h:630: error: ‘int’ is not a class, struct, or union type
intercept.h:631: error: ‘int’ is not a class, struct, or union type
intercept.h:632: error: ‘int’ is not a class, struct, or union type
intercept.h:633: error: ‘int’ is not a class, struct, or union type
intercept.h:639: error: ‘int’ is not a class, struct, or union type
intercept.h:715: error: ‘int’ is not a class, struct, or union type
intercept.h:736: error: ‘int’ is not a class, struct, or union type
intercept.h:801: error: ‘int’ is not a class, struct, or union type
filter_csg.cpp: In member function ‘virtual bool FilterCSG::applyFilter(QAction
, MeshDocument&, RichParameterSet&, bool ()(int, const char))’:
filter_csg.cpp:136: error: no matching function for call to ‘vcg::intercept::InterceptSet3<int>::InterceptSet3(CMeshO&, const vcg::Point3f&, const int&, bool (&)(int, const char))’
intercept.h:629: note: candidates are: vcg::intercept::InterceptSet3<int>::InterceptSet3(const vcg::intercept::InterceptSet3<int>&)
filter_csg.cpp:138: error: no matching function for call to ‘vcg::intercept::InterceptSet3<int>::InterceptSet3(CMeshO&, const vcg::Point3f&, const int&, bool (&)(int, const char))’
intercept.h:629: note: candidates are: vcg::intercept::InterceptSet3<int>::InterceptSet3(const vcg::intercept::InterceptSet3<int>&)
In file included from filter_csg.cpp:30:
intercept.h: At global scope:
intercept.h: In instantiation of ‘vcg::intercept::InterceptBeam<int>’:
intercept.h:413: instantiated from ‘vcg::intercept::InterceptVolume<InterceptType>& vcg::intercept::InterceptVolume<InterceptType>::operator&=(const vcg::intercept::InterceptVolume<InterceptType>&) [with InterceptType = int]
filter_csg.cpp:144: instantiated from here
intercept.h:303: error: ‘int’ is not a class, struct, or union type
intercept.h:321: error: ‘int’ is not a class, struct, or union type
intercept.h: In instantiation of ‘vcg::intercept::InterceptRay<int>’:
intercept.h:844: instantiated from ‘void vcg::intercept::Walker<MeshType, InterceptType="">::BuildMesh(MeshType&, vcg::intercept::InterceptVolume<InterceptType>&, EXTRACTOR_TYPE&, bool ()(int, const char)) [with EXTRACTOR_TYPE = vcg::tri::ExtendedMarchingCubes<CMeshO, vcg::intercept::Walker<CMeshO,="" int=""> >, MeshType = CMeshO, InterceptType = int]
filter_csg.cpp:172: instantiated from here
intercept.h:123: error: ‘int’ is not a class, struct, or union type
intercept.h:163: error: ‘int’ is not a class, struct, or union type
intercept.h:173: error: ‘int’ is not a class, struct, or union type
intercept.h: In member function ‘void vcg::intercept::Walker<MeshType, InterceptType="">::BuildMesh(MeshType&, vcg::intercept::InterceptVolume<InterceptType>&, EXTRACTOR_TYPE&, bool ()(int, const char)) [with EXTRACTOR_TYPE = vcg::tri::ExtendedMarchingCubes<CMeshO, vcg::intercept::Walker<CMeshO,="" int=""> >, MeshType = CMeshO, InterceptType = int]’:
filter_csg.cpp:172: instantiated from here
intercept.h:846: error: request for member ‘dist’ in ‘ curr.gnu_cxx::normal_iterator<_Iterator, _Container>::operator-> with _Iterator = const int*, _Container = std::vector<int, std::allocator<int=""> >’, which is of non-class type ‘const int’
intercept.h:847: error: request for member ‘dist’ in ‘
curr.gnu_cxx::normal_iterator<_Iterator, _Container>::operator-> with _Iterator = const int*, _Container = std::vector<int, std::allocator<int=""> >’, which is of non-class type ‘const int’
intercept.h: In member function ‘void vcg::intercept::Walker<MeshType, InterceptType="">::BuildMesh(MeshType&, vcg::intercept::InterceptVolume<InterceptType>&, EXTRACTOR_TYPE&, bool ()(int, const char)) [with EXTRACTOR_TYPE = vcg::tri::MarchingCubes<CMeshO, vcg::intercept::Walker<CMeshO,="" int=""> >, MeshType = CMeshO, InterceptType = int]’:
filter_csg.cpp:177: instantiated from here
intercept.h:846: error: request for member ‘dist’ in ‘ curr.gnu_cxx::normal_iterator<_Iterator, _Container>::operator-> with _Iterator = const int*, _Container = std::vector<int, std::allocator<int=""> >’, which is of non-class type ‘const int’
intercept.h:847: error: request for member ‘dist’ in ‘
curr.gnu_cxx::normal_iterator<_Iterator, _Container>::operator-> with _Iterator = const int*, _Container = std::vector<int, std::allocator<int=""> >’, which is of non-class type ‘const int’
intercept.h: In member function ‘bool vcg::intercept::InterceptVolume<InterceptType>::checkConsistency(const vcg::intercept::InterceptVolume<InterceptType>&) const [with InterceptType = int]’:
intercept.h:411: instantiated from ‘vcg::intercept::InterceptVolume<InterceptType>& vcg::intercept::InterceptVolume<InterceptType>::operator&=(const vcg::intercept::InterceptVolume<InterceptType>&) [with InterceptType = int]
filter_csg.cpp:144: instantiated from here
intercept.h:402: error: ‘const class vcg::intercept::InterceptVolume<int>’ has no member named ‘delta’
intercept.h:402: error: using invalid field ‘vcg::intercept::InterceptVolume<InterceptType>::delta’
intercept.h: In member function ‘int vcg::intercept::InterceptVolume<InterceptType>::IsIn(const vcg::Point3i&) const [with InterceptType = int]’:
intercept.h:890: instantiated from ‘void vcg::intercept::Walker<MeshType, InterceptType="">::BuildMesh(MeshType&, vcg::intercept::InterceptVolume<InterceptType>&, EXTRACTOR_TYPE&, bool ()(int, const char)) [with EXTRACTOR_TYPE = vcg::tri::ExtendedMarchingCubes<CMeshO, vcg::intercept::Walker<CMeshO,="" int=""> >, MeshType = CMeshO, InterceptType = int]
filter_csg.cpp:172: instantiated from here
intercept.h:452: error: ‘const class vcg::intercept::InterceptBeam<int>’ has no member named ‘IsIn’
intercept.h:470: error: using invalid field ‘vcg::intercept::InterceptVolume<InterceptType>::delta’
intercept.h:470: error: using invalid field ‘vcg::intercept::InterceptVolume<InterceptType>::delta’
intercept.h:470: error: using invalid field ‘vcg::intercept::InterceptVolume<InterceptType>::delta’
intercept.h:890: instantiated from ‘void vcg::intercept::Walker<MeshType, InterceptType="">::BuildMesh(MeshType&, vcg::intercept::InterceptVolume<InterceptType>&, EXTRACTOR_TYPE&, bool ()(int, const char)) [with EXTRACTOR_TYPE = vcg::tri::ExtendedMarchingCubes<CMeshO, vcg::intercept::Walker<CMeshO,="" int=""> >, MeshType = CMeshO, InterceptType = int]
filter_csg.cpp:172: instantiated from here
intercept.h:472: error: ‘const class vcg::intercept::InterceptBeam<int>’ has no member named ‘IsIn’
intercept.h: In member function ‘void vcg::intercept::Walker<MeshType, InterceptType="">::GetIntercept(const vcg::Point3i&, const vcg::Point3i&, typename MeshType::VertexPointer&) [with int coord = 0, MeshType = CMeshO, InterceptType = int]’:
intercept.h:936: instantiated from ‘void vcg::intercept::Walker<MeshType, InterceptType="">::GetXIntercept(const vcg::Point3i&, const vcg::Point3i&, typename MeshType::VertexPointer&) [with MeshType = CMeshO, InterceptType = int]
../../../../vcglib/vcg/complex/algorithms/create/extended_marching_cubes.h:186: instantiated from ‘void vcg::tri::ExtendedMarchingCubes<TRIMESH_TYPE, WALKER_TYPE="">::ProcessCell(const vcg::Point3i&, const vcg::Point3i&) [with TRIMESH_TYPE = CMeshO, WALKER_TYPE = vcg::intercept::Walker<CMeshO, int="">]
intercept.h:901: instantiated from ‘void vcg::intercept::Walker<MeshType, InterceptType="">::BuildMesh(MeshType&, vcg::intercept::InterceptVolume<InterceptType>&, EXTRACTOR_TYPE&, bool ()(int, const char)) [with EXTRACTOR_TYPE = vcg::tri::ExtendedMarchingCubes<CMeshO, vcg::intercept::Walker<CMeshO,="" int=""> >, MeshType = CMeshO, InterceptType = int]
filter_csg.cpp:172: instantiated from here
intercept.h:925: error: request for member ‘dist’ in ‘i’, which is of non-class type ‘const int’
intercept.h:928: error: ‘class vcg::intercept::InterceptVolume<int>’ has no member named ‘delta’
intercept.h:929: error: request for member ‘norm’ in ‘i’, which is of non-class type ‘const int’
intercept.h:930: error: request for member ‘quality’ in ‘i’, which is of non-class type ‘const int’
intercept.h: In member function ‘void vcg::intercept::Walker<MeshType, InterceptType="">::GetIntercept(const vcg::Point3i&, const vcg::Point3i&, typename MeshType::VertexPointer&) [with int coord = 1, MeshType = CMeshO, InterceptType = int]’:
intercept.h:938: instantiated from ‘void vcg::intercept::Walker<MeshType, InterceptType="">::GetYIntercept(const vcg::Point3i&, const vcg::Point3i&, typename MeshType::VertexPointer&) [with MeshType = CMeshO, InterceptType = int]
../../../../vcglib/vcg/complex/algorithms/create/extended_marching_cubes.h:187: instantiated from ‘void vcg::tri::ExtendedMarchingCubes<TRIMESH_TYPE, WALKER_TYPE="">::ProcessCell(const vcg::Point3i&, const vcg::Point3i&) [with TRIMESH_TYPE = CMeshO, WALKER_TYPE = vcg::intercept::Walker<CMeshO, int="">]
intercept.h:901: instantiated from ‘void vcg::intercept::Walker<MeshType, InterceptType="">::BuildMesh(MeshType&, vcg::intercept::InterceptVolume<InterceptType>&, EXTRACTOR_TYPE&, bool ()(int, const char)) [with EXTRACTOR_TYPE = vcg::tri::ExtendedMarchingCubes<CMeshO, vcg::intercept::Walker<CMeshO,="" int=""> >, MeshType = CMeshO, InterceptType = int]
filter_csg.cpp:172: instantiated from here
intercept.h:925: error: request for member ‘dist’ in ‘i’, which is of non-class type ‘const int’
intercept.h:928: error: ‘class vcg::intercept::InterceptVolume<int>’ has no member named ‘delta’
intercept.h:929: error: request for member ‘norm’ in ‘i’, which is of non-class type ‘const int’
intercept.h:930: error: request for member ‘quality’ in ‘i’, which is of non-class type ‘const int’
intercept.h: In member function ‘void vcg::intercept::Walker<MeshType, InterceptType="">::GetIntercept(const vcg::Point3i&, const vcg::Point3i&, typename MeshType::VertexPointer&) [with int coord = 2, MeshType = CMeshO, InterceptType = int]’:
intercept.h:940: instantiated from ‘void vcg::intercept::Walker<MeshType, InterceptType="">::GetZIntercept(const vcg::Point3i&, const vcg::Point3i&, typename MeshType::VertexPointer&) [with MeshType = CMeshO, InterceptType = int]
../../../../vcglib/vcg/complex/algorithms/create/extended_marching_cubes.h:194: instantiated from ‘void vcg::tri::ExtendedMarchingCubes<TRIMESH_TYPE, WALKER_TYPE="">::ProcessCell(const vcg::Point3i&, const vcg::Point3i&) [with TRIMESH_TYPE = CMeshO, WALKER_TYPE = vcg::intercept::Walker<CMeshO, int="">]
intercept.h:901: instantiated from ‘void vcg::intercept::Walker<MeshType, InterceptType="">::BuildMesh(MeshType&, vcg::intercept::InterceptVolume<InterceptType>&, EXTRACTOR_TYPE&, bool ()(int, const char)) [with EXTRACTOR_TYPE = vcg::tri::ExtendedMarchingCubes<CMeshO, vcg::intercept::Walker<CMeshO,="" int=""> >, MeshType = CMeshO, InterceptType = int]
filter_csg.cpp:172: instantiated from here
intercept.h:925: error: request for member ‘dist’ in ‘i’, which is of non-class type ‘const int’
intercept.h:928: error: ‘class vcg::intercept::InterceptVolume<int>’ has no member named ‘delta’
intercept.h:929: error: request for member ‘norm’ in ‘i’, which is of non-class type ‘const int’
intercept.h:930: error: request for member ‘quality’ in ‘i’, which is of non-class type ‘const int’
intercept.h: In member function ‘const InterceptType& vcg::intercept::InterceptVolume<InterceptType>::GetIntercept(const vcg::Point3i&) const [with int coord = 0, InterceptType = int]’:
intercept.h:921: instantiated from ‘void vcg::intercept::Walker<MeshType, InterceptType="">::GetIntercept(const vcg::Point3i&, const vcg::Point3i&, typename MeshType::VertexPointer&) [with int coord = 0, MeshType = CMeshO, InterceptType = int]
intercept.h:936: instantiated from ‘void vcg::intercept::Walker<MeshType, InterceptType="">::GetXIntercept(const vcg::Point3i&, const vcg::Point3i&, typename MeshType::VertexPointer&) [with MeshType = CMeshO, InterceptType = int]
../../../../vcglib/vcg/complex/algorithms/create/extended_marching_cubes.h:186: instantiated from ‘void vcg::tri::ExtendedMarchingCubes<TRIMESH_TYPE, WALKER_TYPE="">::ProcessCell(const vcg::Point3i&, const vcg::Point3i&) [with TRIMESH_TYPE = CMeshO, WALKER_TYPE = vcg::intercept::Walker<CMeshO, int="">]
intercept.h:901: instantiated from ‘void vcg::intercept::Walker<MeshType, InterceptType="">::BuildMesh(MeshType&, vcg::intercept::InterceptVolume<InterceptType>&, EXTRACTOR_TYPE&, bool ()(int, const char)) [with EXTRACTOR_TYPE = vcg::tri::ExtendedMarchingCubes<CMeshO, vcg::intercept::Walker<CMeshO,="" int=""> >, MeshType = CMeshO, InterceptType = int]
filter_csg.cpp:172: instantiated from here
intercept.h:445: error: ‘const class vcg::intercept::InterceptRay<int>’ has no member named ‘GetIntercept’
intercept.h: In member function ‘const InterceptType& vcg::intercept::InterceptVolume<InterceptType>::GetIntercept(const vcg::Point3i&) const [with int coord = 1, InterceptType = int]’:
intercept.h:921: instantiated from ‘void vcg::intercept::Walker<MeshType, InterceptType="">::GetIntercept(const vcg::Point3i&, const vcg::Point3i&, typename MeshType::VertexPointer&) [with int coord = 1, MeshType = CMeshO, InterceptType = int]
intercept.h:938: instantiated from ‘void vcg::intercept::Walker<MeshType, InterceptType="">::GetYIntercept(const vcg::Point3i&, const vcg::Point3i&, typename MeshType::VertexPointer&) [with MeshType = CMeshO, InterceptType = int]
../../../../vcglib/vcg/complex/algorithms/create/extended_marching_cubes.h:187: instantiated from ‘void vcg::tri::ExtendedMarchingCubes<TRIMESH_TYPE, WALKER_TYPE="">::ProcessCell(const vcg::Point3i&, const vcg::Point3i&) [with TRIMESH_TYPE = CMeshO, WALKER_TYPE = vcg::intercept::Walker<CMeshO, int="">]
intercept.h:901: instantiated from ‘void vcg::intercept::Walker<MeshType, InterceptType="">::BuildMesh(MeshType&, vcg::intercept::InterceptVolume<InterceptType>&, EXTRACTOR_TYPE&, bool ()(int, const char)) [with EXTRACTOR_TYPE = vcg::tri::ExtendedMarchingCubes<CMeshO, vcg::intercept::Walker<CMeshO,="" int=""> >, MeshType = CMeshO, InterceptType = int]
filter_csg.cpp:172: instantiated from here
intercept.h:445: error: ‘const class vcg::intercept::InterceptRay<int>’ has no member named ‘GetIntercept’
intercept.h: In member function ‘const InterceptType& vcg::intercept::InterceptVolume<InterceptType>::GetIntercept(const vcg::Point3i&) const [with int coord = 2, InterceptType = int]’:
intercept.h:921: instantiated from ‘void vcg::intercept::Walker<MeshType, InterceptType="">::GetIntercept(const vcg::Point3i&, const vcg::Point3i&, typename MeshType::VertexPointer&) [with int coord = 2, MeshType = CMeshO, InterceptType = int]
intercept.h:940: instantiated from ‘void vcg::intercept::Walker<MeshType, InterceptType="">::GetZIntercept(const vcg::Point3i&, const vcg::Point3i&, typename MeshType::VertexPointer&) [with MeshType = CMeshO, InterceptType = int]
../../../../vcglib/vcg/complex/algorithms/create/extended_marching_cubes.h:194: instantiated from ‘void vcg::tri::ExtendedMarchingCubes<TRIMESH_TYPE, WALKER_TYPE="">::ProcessCell(const vcg::Point3i&, const vcg::Point3i&) [with TRIMESH_TYPE = CMeshO, WALKER_TYPE = vcg::intercept::Walker<CMeshO, int="">]
intercept.h:901: instantiated from ‘void vcg::intercept::Walker<MeshType, InterceptType="">::BuildMesh(MeshType&, vcg::intercept::InterceptVolume<InterceptType>&, EXTRACTOR_TYPE&, bool ()(int, const char)) [with EXTRACTOR_TYPE = vcg::tri::ExtendedMarchingCubes<CMeshO, vcg::intercept::Walker<CMeshO,="" int=""> >, MeshType = CMeshO, InterceptType = int]
filter_csg.cpp:172: instantiated from here
intercept.h:445: error: ‘const class vcg::intercept::InterceptRay<int>’ has no member named ‘GetIntercept’
make[1]: [filter_csg.o] Fehler 1
make[1]: Verlasse Verzeichnis '/home/username/meshlab/src/meshlabplugins/filter_csg'
make:
[sub-meshlabplugins-filter_csg-make_default-ordered] Fehler 2

Discussion

  • alex

    alex - 2013-09-30

    this error persists two years later

     
  • Daniel Hornung

    Daniel Hornung - 2014-03-10

    I can confirm this problem. Which library should provide this header and is its existence currently tested in the qmake stage?

     
  • Daniel Hornung

    Daniel Hornung - 2014-03-10

    Going into external/inc and just reusing the macx64 worked for at least to compile the code:

    cd external/inc
    ln -s macx64/ linux-g++-64

    Linking fails though because it seems there are neither the precompiled libraries nor the sources. Maybe downloading the source from http://www.mpir.org/ and compiling it by hand may work.

     
  • Gregory Smith

    Gregory Smith - 2014-04-27

    I ran into this error building from the latest source MeshLabSrc_AllInc_v133.tgz, and I worked around according to the advice here
    http://pointclouds-view.blogspot.ca/2013/09/compiling-meshlab-on-linux.html

    In addition to the advice given there I also needed to comment out one more:

    # meshlabplugins/filter_csg \

    (as well as filter_plymc and filter_texture).

     
  • Gregory Smith

    Gregory Smith - 2014-04-27

    Yes, it's part of MPIR https://github.com/wbhart/mpir/blob/master/mpirxx.h

    MPIR does not seem to be listed in the requirements for building Meshlab (neither is GMP, but it's quite commonly installed)

    According to the 'about', MPIR is a fork of GMP, and is intended to be a drop-in replacement (with additional features) for the more commonly used GMP. However, the use of 'mpirxx.h' means MPIR is needed.

     

Log in to post a comment.