如何解决:错误C2039:“ make_normal_of_point_with_normal_pmap”:不是“ CGAL”的成员

时间:2018-08-15 13:53:24

标签: matlab mex cgal

我正在使用CGAL 4.12和本征3.3.4并尝试通过Matlab mex函数编译Poisson_surface_reconstruction_3示例,并收到以下错误:

C:\Users\u0116401\Documents\PRosPeRoS\Matlab_Code\mexTest\CGAL_poisson_reconstruction.cpp(70): error C2039: 'make_normal_of_point_with_normal_pmap': is not a member of 'CGAL'
C:\dev\CGAL-4.12\include\CGAL/IO/read_xyz_points.h(40): note: see declaration of 'CGAL'
C:\Users\u0116401\Documents\PRosPeRoS\Matlab_Code\mexTest\CGAL_poisson_reconstruction.cpp(70): error C3861: 'make_normal_of_point_with_normal_pmap': identifier not found

似乎找不到“ make_normal_of_point_with_normal_pmap”。有谁知道是什么引起了这个问题?

产生此错误的代码是:

/* mex headers */
#include <mex.h>

/* C++ headers */
#include <vector>
#include <fstream>

/* CGAL headers */
#include <CGAL/trace.h>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Polyhedron_3.h>
#include <CGAL/IO/Polyhedron_iostream.h>
#include <CGAL/Surface_mesh_default_triangulation_3.h>
#include <CGAL/make_surface_mesh.h>
#include <CGAL/Implicit_surface_3.h>
#include <CGAL/IO/output_surface_facets_to_polyhedron.h>
#include <CGAL/Poisson_reconstruction_function.h>
#include <CGAL/Point_with_normal_3.h>
#include <CGAL/property_map.h>
#include <CGAL/IO/read_xyz_points.h>
#include <CGAL/compute_average_spacing.h>

// Types
typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
typedef Kernel::FT FT;
typedef Kernel::Point_3 Point;
typedef CGAL::Point_with_normal_3<Kernel> Point_with_normal;
typedef Kernel::Sphere_3 Sphere;
typedef std::vector<Point_with_normal> PointList;
typedef CGAL::Polyhedron_3<Kernel> Polyhedron;
typedef CGAL::Poisson_reconstruction_function<Kernel>Poisson_reconstruction_function;
typedef CGAL::Surface_mesh_default_triangulation_3 STr;
typedef CGAL::Surface_mesh_complex_2_in_triangulation_3<STr> C2t3;
typedef CGAL::Implicit_surface_3<Kernel, Poisson_reconstruction_function> Surface_3;

void mexFunction(int nlhs, mxArray *plhs[],      /*Output variables */
             int nrhs, const mxArray *prhs[]) /*Input variables */
{
    PointList points;
    std::ifstream stream("kitten.xyz");
    if (!stream ||
        !CGAL::read_xyz_points_and_normals(
                            stream,
                            std::back_inserter(points),
                            CGAL::make_normal_of_point_with_normal_pmap(std::back_inserter(points))))
}

1 个答案:

答案 0 :(得分:1)

该函数被命名为make_normal_of_point_with_normal_map()map而不是pmap),并且它使用Point_with_normal作为参数。呼叫应为:

CGAL::make_normal_of_point_with_normal_map(Point_with_normal())