CGAL Surface_mesh_skeletonization编译错误排查与解决
解决VS2017中CGAL Surface_mesh_skeletonization示例编译错误的方案
我是刚从C#转到C++和CGAL的新手,按照官方指引完成CGAL安装后,基础的Hello World示例运行毫无问题,但编译Surface_mesh_skeletonization相关示例时碰了一堆钉子:
- 报C2039错误:提示
extract_mean_curvature_flow_skeleton不是CGAL的成员 - 同时报错
Matrix和Vector不属于CGAL::Default
一开始我试着添加#define CGAL_EIGEN3_ENABLED,但放在#include后面根本没用;移到所有头文件引用前又出现了LNK2019未解析外部符号的链接错误。我用的是VS2017,CGAL的基础库和包含目录都已经配置好了。
折腾了一阵后,终于通过以下四步解决了所有问题:
- 下载解压EIGEN库,新建系统环境变量
EIGEN_DIR,指向EIGEN的解压根目录 - 在VS项目的「附加包含目录」中添加
$(EIGEN_DIR) - 确保在所有CGAL相关的
#include语句之前添加#define CGAL_EIGEN3_ENABLED - 在项目的「附加依赖项」里加上两个库:
$(CGAL_ROOT)\auxiliary\gmp\lib\libmpfr-4.lib$(CGAL_ROOT)\auxiliary\gmp\lib\libgmp-10.lib
做完这些操作后,示例就能顺利编译运行了。
内容的提问来源于stack exchange,提问作者Oleksandr Korniienko
相关产品推荐
相关产品推荐

