2013-04-14 27 views
3

我試圖使用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

+0

看來,gvc.h包含types.h,其中包括cgraph.h,所以我不知道爲什麼它認爲Agdirected是未申報的。 –

回答

1

好像經過一番實驗,加入旗

#define WITH_CGRAPH 

有包括cgraph.h的效果,這擺脫「Agdirected」未聲明「的錯誤。

其他錯誤可以通過從-lgraph改變命令行選項中的gcc到-lcgraph

1

您所使用的libguide是cgraph版本,其假設的Graphviz 2.30或更高版本的固定。使用該版本,已經提供了#define WITH_CGRAPH。