解决cgal中的surface_mesh_deformation,代码copy到别处报错

我只想说我遇到过多少奇葩的bug啊。。。这么奇葩的错误我竟然能debug出来真是醉醉的

cgal4.5之后,有实现surface_mesh_deformation的example。

1.如何正常编译example?

最好是在编译cgal的时候,cmake中的entry就有,勾选上with_eigen,然后配置include目录即可。

这样以后省事,所以编译cgal的时候,要好好检查外置的库,会用到的都先加上。

如果不想重新编译cgal,在重新用cmake编译surface_mesh_deformation这个example和demo时,选择with_eigen即可。

2.当你正常运行example之后,把代码原样copy到自己的project中,编译会报错TTTTTTT

1>C:\Program Files\CGAL-4.6.1\include\CGAL/Surface_mesh_deformation.h(212): error C2039: ‘Matrix‘ : is not a member of ‘CGAL::Default‘

1>          C:\Program Files\CGAL-4.6.1\include\CGAL/Default.h(31) : see declaration of ‘CGAL::Default‘

1>          ModelDecompoent.cpp(245) : see reference to class template instantiation ‘CGAL::Surface_mesh_deformation<HG>‘ being compiled

1>          with

1>          [

1>              HG=Polyhedron

1>          ]

......

一堆错

翻墙说加上#define CGAL_EIGEN3_ENABLED

因为看CGAL/Surface_mesh_deformation.h代码中:

#if
defined(CGAL_EIGEN3_ENABLED)

#include <CGAL/Eigen_solver_traits.h>  // for sparse linear system solver

#include <CGAL/Deformation_Eigen_polar_closest_rotation_traits_3.h>  // for 3x3 closest rotation computer

#endif

就是说CGAL_EIGEN3_ENABLED被define了才可以。

然而我加上并没有用!!!

为什么呢?

因为顺序反了=
=

正确的顺序:

#define
CGAL_EIGEN3_ENABLED

#include <CGAL/Surface_mesh_deformation.h>

错误的顺序:

#include
<CGAL/Surface_mesh_deformation.h>

#define CGAL_EIGEN3_ENABLED
//这样子都include完了,define还有什么用。。。

真是奇葩的bug

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-28 19:38:07

解决cgal中的surface_mesh_deformation,代码copy到别处报错的相关文章

解决Eclips中使用V7兼容包的主题报错的问题

新建项目默认会使用v7包中的主题,如果你workplace中没有v7库,那是一定会报错的. 1.导入v7jar,没用,因为需要的是v7的资源文件 2.既然如此,导入v7的整个项目应该ok了吧,import之后,尼玛还报错,百思不得骑姐,删了导,导了删,把SDK都弄坏了还是报错.并且build path还不报错. 终极大招,原来原因是因为v7库和项目没有在一个盘符下,import的时候,注意要勾选copy projects into workplace,也就是把依赖库从sdk复制一份到当前的wor

[已解决]springBoot 中添加 dev-tools后,运行程序报错Unenhance strategy

发生条件:在pom.xml中增加dev-tools的依赖,程序启动后,调用程序接口报错 问题现象: ------------------------------------------------------------- Registered concrete types: 5 (approximate size: 630.7 kB) [interface java.util.Collection] : ArrayList<Object> [interface java.util.Map]

解决Eclipse中Java工程间循环引用而报错的问题

如果myeclipse  报如下错误 A cycle was detected in the build path of project 如果我们的项目包含多个工程(project),而它们之间又是循环引用的关系,那么Eclipse在编译时会抛出如下一个错误信息: "A cycle was detected in the build path of project: XXX" 解决方法非常简单: Eclipse Menu -> Window -> Preferences..

解决python中selen模块中&#39;list&#39; object has no attribute &#39;send_keys&#39;报错

程序在执行如下代码的时候报错'list' object has no attribute 'send_keys' 解决: 把find_elements_by_id方法改成find_element_by_id 参考: https://stackoverflow.com/questions/29957373/selenium-python-send-key-error-list-object-has-no-attribute 解决python中selen模块中'list' object has no

解决Ext4.2.3中propertyGrid修改后点击排序报错

Ext4.2.3中PropertyGrid修改后点击排序报错,具体错误信息如下: 一开始还怀疑是自己哪里配置错了,各种尝试结果还是一样.查遍百度和谷歌,无果,只有一篇帖子说是4.2.4修正了.还是自己动手吧,自己动手丰衣足食. 点开报错地方(如下图所示),原来是me.field.column没有定义. 然后继续找,找啊找啊找到Ext.grid.property.Grid的getCellEditor方法.此方法有参数column,可在方法体内,column就没有被用到过,于是就感觉问题出在这里.

Python中安装bs4后,pycharm依然报错ModuleNotFoundError: No module named &#39;bs4&#39;

学习网络抓取时,第一步出现问题. 执行示例代码 from urllib.request import urlopen from bs4 import BeautifulSoup html = urlopen("http://www.pythonscraping.com/exercises/exercise1.html") bsObj = BeautifulSoup(html, "html.parser") print(bsObj.h1) 执行结果 Traceback

Linux下编译C代码,出现tan函数报错的情况

undefined reference to `tan' 但是已经包含了头文件 <math.h>了,可还是报错,说是找不到tan 这个问题的原因不是很清楚, 但是网上给出的方案,就是编译的时候 加上参数 -lm 有说l表示Lib ,m表示 math.h  , ****************************************************************************************************** 以下是一些说明 使用math.h

解决node在ubuntu下npm install canvas不断报错的尴尬

项目中需要用到node中一个验证码的npm包:captchagen,此npm包依赖canvas画布npm包.执行npm install canvas时就会报错,错误代码显示文件编译失败.最终在github问答上找到答案: 问题根源是ubuntu中缺少图形开发库,一一安装上问题解决. sudo apt-get install libcario-dev; sudo apt-get install libjpeg-dev; sudo apt-get install libgif-dev; sudo a

使用Entity Framework迁移完数据库后,每次修改代码(非模型代码)后都报错。

问题:使用Entity Framework迁移完数据库后,每次修改代码(非模型代码)后都报错: 支持“XXXDbContext”上下文的模型已在数据库创建后发生更改.请考虑使用 Code First 迁移更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269). 这时如果执行 Add-Migration 生成的迁移代码是空的.于是重新Update-Database,结果却是No pending explicit migrations. 不过这时是不