【问题标题】:Problems using graphviz as a library使用 graphviz 作为库的问题
【发布时间】:2013-05-08 23:49:29
【问题描述】:

我正在尝试使用 graphviz 作为 C++ 项目的库,遵循此处提供的libguide。但是,即使编译附录中的示例,我也遇到了问题。当我尝试使用 gcc 编译 demo.c 时,我得到以下输出:

$ gcc -I/usr/local/Cellar/graphviz/2.28.0/include/ demo.c -L/usr/local/Cellar/graphviz/2.28.0/lib/ -lgvc -lgraph -lcdt
demo.c: In function ‘main’:
demo.c:14: error: ‘Agdirected’ undeclared (first use in this function)
demo.c:14: error: (Each undeclared identifier is reported only once
demo.c:14: error: for each function it appears in.)
demo.c:15: error: too many arguments to function ‘agnode’
demo.c:16: error: too many arguments to function ‘agnode’
demo.c:17: error: too many arguments to function ‘agedge’

Agdirected 在 cgraph.h 中找到,但如果我将 demo.c 中的包含更改为

#include <graphviz/gvc.h>
#include <graphviz/cgraph.h>

然后一切都变得松散(主要是两个标题之间的冲突声明)。我怎样才能包含必要的标头而不用担心所有这些冲突?

Mac OS X 10.8.3、Graphviz 2.28.0、GCC 4.2.1

【问题讨论】:

  • gvc.h好像包含types.h,其中包含cgraph.h,所以我不知道为什么它认为Agdirected是未声明的。

标签: c gcc graphviz


【解决方案1】:

似乎经过一些实验后添加了标志

#define WITH_CGRAPH

具有包含 cgraph.h 的效果,它消除了“'Agdirected' undeclared”错误。

可以通过将 gcc 中的命令行选项从 -lgraph 更改为 -lcgraph 来修复其他错误

【讨论】:

    【解决方案2】:

    您使用的 libguide 是 cgraph 版本,它假定 Graphviz 2.30 或更高版本。在该版本中,已经提供了#define WITH_CGRAPH。

    【讨论】:

      猜你喜欢
      • 2012-02-02
      • 2013-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-13
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      相关资源
      最近更新 更多