0

http://www.graphviz.org/Documentation.phpの「Graphviz をライブラリとして使用する」の例を実行しようとしています。

#include <gvc.h>
int main(int argc, char **argv)
{
    Agraph_t *g;
    Agnode_t *n, *m;
    Agedge_t *e;
    Agsym_t *a;
    GVC_t *gvc;
    /* set up a graphviz context */
    gvc = gvContext();
    /* parse command line args - minimally argv[0] sets layout engine */
    gvParseArgs(gvc, argc, argv);
    /* Create a simple digraph */
    g = agopen("g", Agdirected);
    n = agnode(g, "n", 1);
    m = agnode(g, "m", 1);
    e = agedge(g, n, m, 0, 1);
    /* Set an attribute - in this case one that affects the visible rendering */
    agsafeset(n, "color", "red", "");
    /* Compute a layout using layout engine from command line args */
    gvLayoutJobs(gvc, g);
    /* Write the graph according to -T and -o options */
    gvRenderJobs(gvc, g);
    /* Free layout data */
    gvFreeLayout(gvc, g);
    /* Free graph structures */
    agclose(g);
    /* close output file, free context, and return number of errors */
    return (gvFreeContext(gvc));
}

私はコンパイルしてリンクしています: gcc -Wall pkg-config libgvc --cflags --libs*.c -o EXE -lgvc

そして、次の結果が表示されます。

graph.c: In function ‘main’:
graph.c:14:18: error: ‘Agdirected’ undeclared (first use in this function)
graph.c:14:18: note: each undeclared identifier is reported only once for each function it appears in
graph.c:15:2: error: too many arguments to function ‘agnode’
In file included from /usr/include/graphviz/types.h:717:0,
                 from /usr/include/graphviz/gvc.h:20,
                 from graph.c:1:
/usr/include/graphviz/graph.h:185:22: note: declared here
graph.c:16:2: error: too many arguments to function ‘agnode’
In file included from /usr/include/graphviz/types.h:717:0,
                 from /usr/include/graphviz/gvc.h:20,
                 from graph.c:1:
/usr/include/graphviz/graph.h:185:22: note: declared here
graph.c:17:2: error: too many arguments to function ‘agedge’
In file included from /usr/include/graphviz/types.h:717:0,
                 from /usr/include/graphviz/gvc.h:20,
                 from graph.c:1:
/usr/include/graphviz/graph.h:192:22: note: declared here
graph.c:7:11: warning: unused variable ‘a’ [-Wunused-variable]
graph.c:6:12: warning: variable ‘e’ set but not used [-Wunused-but-set-variable]

何が起こっているのかを理解するのを手伝ってくれる人はいますか? これらの関数の引数についてコンパイラが不平を言うのはなぜですか?

ありがとうございました!!!!

4

1 に答える 1

0

コードを gc として保存し、このコマンド ラインを発行しました

gcc -Wall `pkg-config libgvc --cflags --libs` g.c -o EXE -lgvc

それがもたらす

g.c: In function ‘main’:
g.c:14:5: error: too few arguments to function ‘agopen’
/usr/local/include/graphviz/cgraph.h:266:18: note: declared here
g.c:7:14: warning: unused variable ‘a’ [-Wunused-variable]
g.c:6:15: warning: variable ‘e’ set but not used [-Wunused-but-set-variable]

次に、ミスパラメータを追加しました

g = agopen("g", Agdirected, 0);

そしてミス図書館

gcc -Wall `pkg-config libgvc --cflags --libs` g.c -lgvc -lcgraph

これで、コードがコンパイルおよびリンクされ、2 つの警告のみが表示されます。

g.c: In function ‘main’:
g.c:7:14: warning: unused variable ‘a’ [-Wunused-variable]
g.c:6:15: warning: variable ‘e’ set but not used [-Wunused-but-set-variable]

ソースからgraphvizをビルドしたため、動作すると思います。pkg-configは最新です...プログラムにはまだデバッグが必要です。実行すると、次のようになります。

./a.out

There is no layout engine support for "a.out"
Use one of: circo dot fdp neato nop nop1 nop2 osage patchwork sfdp twopi
Error: Layout was not done.  Missing layout plugins? 

このメッセージは、レイアウト エンジンがデフォルトで exe 名 (ieaout、gcc コンパイル アンド リンクのデフォルト) をレイアウト文字列として使用するためです...

于 2013-10-25T12:41:14.287 に答える