Трудности заставить GraphViz работать как библиотека в C ++ - PullRequest
3 голосов
/ 22 мая 2010

Я работаю над программой, которая позволит отображать график узлов, а затем визуально обновлять их по мере обновления самих узлов. Я довольно новичок в Visual Studio 2010 и следую руководству GraphViz, расположенному по адресу на веб-сайте GraphViz , чтобы заставить GraphViz работать как библиотека. У меня есть следующий код, который взят прямо из PDF-файла, указанного выше.

#include <graphviz\gvc.h>
#include <graphviz\cdt.h>
#include <graphviz\graph.h>
#include <graphviz\pathplan.h>
using namespace std;

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", AGDIGRAPH);
    n = agnode(g, "n");
    m = agnode(g, "m");
    e = agedge(g, n, m);

    /* 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));
}

После компиляции я получаю следующие ошибки, которые указывают на то, что я не правильно его связал.

1>main.obj : error LNK2019: unresolved external symbol _gvFreeContext referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol _agclose referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol _gvFreeLayout referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol _gvRenderJobs referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol _gvLayoutJobs referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol _agsafeset referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol _agedge referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol _agnode referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol _agopen referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol _gvParseArgs referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol _gvContext referenced in function _main

В каталогах VC ++ у меня есть

C: \ Program Files (x86) \ Graphviz2.26.3 \ include во включаемых каталогах

и

C: \ Program Files (x86) \ Graphviz2.26.3 \ lib \ release \ lib в каталогах библиотеки

Любая помощь будет принята с благодарностью за то, чтобы это помогло. Спасибо.

Ответы [ 2 ]

1 голос
/ 22 мая 2010

При вводе дополнительных библиотек вы должны добавить библиотеку импорта graphviz, как бы она ни называлась, она находится в директории lib, к которой вы добавили путь. Возможно, graphviz.lib?

1 голос
/ 22 мая 2010

Обычно вам нужно добавить файл .lib к дополнительному вводу в первом разделе области связывания.

Исправление: свойства-> Линкер-> Ввод-> Дополнительные зависимости.

...