3

ここで提供されているlibguideに従って、graphviz を C++ プロジェクトのライブラリとして使用しようとしています。ただし、付録の例をコンパイルすることさえできません。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>

その後、すべての地獄が解き放たれます (ほとんどの場合、2 つのヘッダー間で宣言が競合します)。これらすべての競合の頭痛の種なしに、必要なヘッダーを含めるにはどうすればよいですか?

Mac OS X 10.8.3、Graphviz 2.28.0、GCC 4.2.1

4

2 に答える 2

1

いくつかの実験の後、フラグを追加するようです

#define WITH_CGRAPH

「'Agdirected' undeclared」エラーを取り除く cgraph.h を含める効果があります。

その他のエラーは、gcc のコマンド ライン オプションを -lgraph から -lcgraph に変更することで修正できます。

于 2013-04-15T05:19:24.830 に答える
1

使用している libguide は、Graphviz 2.30 以降を前提とする cgraph バージョンです。そのバージョンでは、#define WITH_CGRAPH が既に提供されています。

于 2013-05-08T15:49:29.873 に答える