C++ 让GraphViz在C++;

C++ 让GraphViz在C++;,c++,dll,visual-studio-2010,linker,graphviz,C++,Dll,Visual Studio 2010,Linker,Graphviz,我正在开发一个程序,该程序允许显示节点图,然后在节点自身更新时进行可视化更新。我是VisualStudio2010的新手,为了让GraphViz作为一个库工作,我正在遵循位于的GraphViz指南。我有下面的代码,这是直接从上面链接的pdf #include <graphviz\gvc.h> #include <graphviz\cdt.h> #include <graphviz\graph.h> #include <graphviz\pathplan.

我正在开发一个程序,该程序允许显示节点图,然后在节点自身更新时进行可视化更新。我是VisualStudio2010的新手,为了让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));
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main(int argc,字符**argv)
{
Agraph_t*g;
Agnode_t*n,*m;
阿吉奇(Agedge_*e);
Agsym_t*a;
全球价值链*GVC;
/*设置graphviz上下文*/
全球价值链=全球价值链上下文();
/*解析命令行args-最小argv[0]设置布局引擎*/
全球价值链(gvc、argc、argv);
/*创建一个简单的有向图*/
g=agopen(“g”,有向图);
n=agnode(g,“n”);
m=agnode(g,“m”);
e=agedge(g,n,m);
/*设置一个属性-在本例中是影响可见渲染的属性*/
agsafeset(n,“彩色”、“红色”、“黄色”);
/*从命令行参数使用布局引擎计算布局*/
全球价值链(gvc,g);
/*根据-T和-o选项编写图表*/
全球价值链(gvc,g);
/*自由布局数据*/
全球价值链(gvc,g);
/*自由图结构*/
agclose(g);
/*关闭输出文件、释放上下文并返回错误数*/
返回(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 1> main.obj:错误LNK2019:未解析的外部符号_gvFreeContext在函数_main中引用 1> main.obj:错误LNK2019:未解析的外部符号_agclose在函数_main中引用 1> main.obj:错误LNK2019:未解析的外部符号_gvFreeLayout在函数_main中引用 1> main.obj:错误LNK2019:未解析的外部符号_gRenderJobs在函数_main中引用 1> main.obj:错误LNK2019:未解析的外部符号_gvLayoutJobs在函数_main中引用 1> main.obj:错误LNK2019:函数_main中引用的未解析外部符号_agsafeset 1> main.obj:错误LNK2019:函数_main中引用的未解析外部符号_agedge 1> main.obj:错误LNK2019:函数_main中引用的未解析外部符号_agnode 1> main.obj:错误LNK2019:函数_main中引用了未解析的外部符号_agopen 1> main.obj:错误LNK2019:未解析的外部符号_gvParseArgs在函数_main中引用 1> main.obj:错误LNK2019:函数_main中引用的未解析外部符号_gvContext 在我的VC++目录中

C:\Program Files(x86)\Graphviz2.26.3\包含在包含目录中

库目录中的C:\Program Files(x86)\Graphviz2.26.3\lib\release\lib


任何帮助都将不胜感激,以帮助这项工作。谢谢。

您通常需要将.lib文件添加到链接区域第一部分的附加输入中


更正:属性->链接器->输入->其他依赖项。

在“其他库输入”下,必须添加graphviz导入库,不管它叫什么,它都位于添加路径的库目录中。可能是graphviz.lib?

我刚刚添加了这些,现在错误消失了,它成功编译了,但是当我尝试运行该程序时,我得到了以下错误:“该程序无法启动,因为您的计算机缺少graph.dll。请尝试重新安装该程序以解决此问题。”我通过附加的依赖项链接了graph.dll,所以我真的不知道还能做什么。@扭曲的Lojik您可能通过附加的依赖项而不是graph.dll添加了graph.lib/graphviz.lib-这是链接器的信息。操作系统找不到graph.dll,因此请将graph.dll放在操作系统可以找到它的地方,例如系统目录(例如,在我的32位XP上为C:/Windows/System32)[请参阅此处有关Windows dll搜索顺序的内容]。graph.dll文件只需位于PATH变量或包含exe的目录中。