我正在尝试使用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
答案 0 :(得分:1)
经过一些实验,似乎添加了标志
#define WITH_CGRAPH
具有包含cgraph.h的效果,它消除了“'Agdirected'未声明的”错误。
可以通过将gcc中的命令行选项从-lgraph更改为-lcgraph来修复其他错误
答案 1 :(得分:1)
您使用的libguide是cgraph版本,它假设Graphviz 2.30或更高版本。在该版本中,已经提供了#define WITH_CGRAPH。