Graphviz作为库:创建多个图形导致错误

时间:2013-06-06 12:14:23

标签: c graphviz

我正在创建一个需要创建多个图形的小型C程序。这些图的点是字符串,所以我使用agmemread而不是agread(我想避免创建临时文件)。但是,在多次调用agmemread时似乎会中断。

以下示例输出“error2”,因此在调用agmemread时第二次失败:

#include <gvc.h>

int main() {
  Agraph_t *g1 = agmemread("graph testgraph {\n\n}");

  if (!g1) {
    printf("error1\n");
    return 1;
  }

  agclose(g1);

  Agraph_t *g2 = agmemread("graph testgraph {\n\n}");

  if (!g2) {
    printf("error2\n");
    return 1;
  }

  agclose(g2);
  return 0;
}

在现实生活中的例子中,当然这些部分之间会有更多代码。

第二次打电话给agmemread之前,是否需要释放或关闭任何内容?或者它是graphviz的Bug?我在Mac OS X上使用graphviz: stable 2.30.1, devel 2.31.20130523.0446

agread相同的示例反而像魅力一样。

2 个答案:

答案 0 :(得分:2)

这是agmemread()中的一个错误。修复程序应于2013年6月18日开始显示在软件包中。感谢您报告。

答案 1 :(得分:1)

在每个图表的结束“}”之后添加“\ n”解决了问题。我还在研究为什么这是必需的,语法上的。