1

我想使用 Tetgen 通过四面体化计算给定点集的体积。我已经在代码中看到了这样做的一个片段,可能只需要一些调整。

我遇到的问题是让 tetcall(tetgen 的测试程序)开始运行。如果我想编译它(在 Linux 终端中使用 g++ -o test tetcall.cxx -L./ -ltet )。我得到:

test.cpp:183:24:警告:不推荐从字符串常量到“char*”的转换 [-Wwrite-strings] test.cpp:184:23:警告:不推荐从字符串常量到“char*”的转换 [-Wwrite-字符串] test.cpp:190:30: 错误:无法将参数 '1' 的 'tetgenio::polygon*' 转换为 'tetgenbehavior*' 到 'void tetrahedralize(tetgenbehavior*, tetgenio*, tetgenio*, tetgenio*, tetgenio* )' test.cpp:193:26: 警告:不推荐从字符串常量转换为 'char*' [-Wwrite-strings] test.cpp:194:29: 警告:不推荐从字符串常量转换为 'char*' [- Wwrite-strings] test.cpp:195:26: 警告:不推荐从字符串常量到 'char*' 的转换 [-Wwrite-strings]

在命令中是否包含 -L./ -ltet 似乎与错误无关。

我认为那些警告不是这样的问题。我不明白第 190 行 tetcall.cxx 调用函数 tetrahedralize 的错误:

tetrahedralize("pq1.414a0.1", &in, &out);

不起作用,我没有更改任何内容,并从站点 [http://tetgen.berlios.de/][1] 获得了$ make tetlib所有内容a) 在同一张地图中。我认为编译器想要连接的函数,以及它可能向南的地方,在 tetgen.cxx 第 34498 行

void tetrahedralize(tetgenbehavior *b, tetgenio *in, tetgenio *out,
  tetgenio *addin, tetgenio *bgmin)

我查看了标题中的 tetgenbehavior 类,但我无法真正弄清楚变量 tetgenbehavior *b 是什么或如何找出它的类型。我看到一些我认为是开关的 char 成员。我做错了什么,错误的原因是什么?

4

2 回答 2

2

这可能是一个老问题,您可能已经弄清楚了,但是您需要设置 TETLIBRARY 的预处理器定义。

于 2013-10-16T23:36:02.490 回答
1

尝试使用此命令

g++ -o test tetcall.cxx -DTETLIBRARY -L./ -ltet
于 2013-12-23T07:03:23.173 回答