我試圖使用graphviz作爲C++項目的庫,遵循這裏提供的libguide。但是,即使編譯附錄中的例子,我也遇到了問題。當我嘗試編譯demo.c使用gcc我得到以下輸出:使用graphviz作爲庫的問題
$ 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是未申報的。 –