CGAL Skeletonization编译错误

时间:2018-01-20 08:58:29

标签: c++ cgal

我是C ++和CGAL的新手,之前我主要使用C#。

我按https://www.cgal.org/download/windows.html所述安装了CGAL,所有步骤都已成功完成。 然后我看了一个CGAL' Hello world' (https://doc.cgal.org/latest/Manual/Kernel_23_2points_and_segment_8cpp-example.html);在这里我也没有问题;所有的代码都经过编译和运行。

但是当我尝试更复杂的事情时,我遇到了一个奇怪的问题。例如,我尝试编译Skeletonization(https://doc.cgal.org/latest/Surface_mesh_skeletonization/Surface_mesh_skeletonization_2simple_mcfskel_example_8cpp-example.html); 在这里,我遇到了许多错误:

  

C2039'' extract_mean_curvature_flow_skeleton'':不是'' CGAL''的成员   C2039''':不是'' CGAL ::默认''的成员   C2039''':不是'' CGAL ::默认''

的成员

据我所知,处理#include行没有错误,所有需要的标题都存在。

我尝试搜索答案并发现:http://cgal-discuss.949826.n4.nabble.com/Problem-on-Surface-mesh-deformation-td4661042.html 不幸的是,我不确定我的情况是否相似,而且我不知道在那里推荐的#define CGAL_EIGEN3_ENABLED行是什么。

在任何情况下,如果在#include之后插入#define,我尝试添加它并获得与之前相同的错误;在不同情况下出现了很多这样的错误:

  

LNK2019未解析的外部符号__imp___gmpq_add在函数&#34中引用;类CGAL :: Gmpq __cdecl CGAL :: operator +(类CGAL :: Gmpq const&,类CGAL :: Gmpq const&)" (?? HCGAL @@ YA?AVGmpq @ 0 @ AEBV10 @ 0 @ Z)

我在VS 2017中工作,在我添加的其他库目录中:

  

$(CGAL_DIR)/ lib / Debug; $(CGAL_DIR)/ lib

在其他包含目录中:

  

$(CGAL_ROOT)\包括; $(CGAL_ROOT)\辅助\ GMP \包括;
  $(CGAL_DIR)\包括; $(BOOST_INCLUDEDIR)

这里可能缺少一些需要的库或包含目录? 所有组件(CGAL,boost,QT)都安装在64位版本以及测试项目中。

UPD:问题已经解决了!

答案非常简单(请注意我是C ++的新成员):
1.我加载并解压缩EIGEN(它不需要安装);为方便起见,我还创建了EIGEN_DIR变量;
2.我添加到附加包含目录:$(EIGEN_DIR);
3.我在#include陈述#define CGAL_EIGEN3_ENABLED之前添加了; { 4.我添加了附加依赖项这样的库:

  

$(CGAL_ROOT)\辅助\ GMP \ lib中\ libmpfr-4.lib
  $(CGAL_ROOT)\辅助\ GMP \ lib中\ libgmp-10.lib

它开始起作用了!

0 个答案:

没有答案