【问题标题】:Difficulties getting GraphViz working as a library in C++让 GraphViz 在 C++ 中作为库工作的困难
【发布时间】:2011-02-22 13:35:33
【问题描述】:

我正在开发一个程序,该程序将允许显示节点图,然后随着节点本身的更新而直观地更新。我对 Visual Studio 2010 相当陌生,并且正在遵循位于 on the GraphViz website 的 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:错误 LNK2019:函数 _main 中引用的未解析的外部符号 _gvFreeContext 1>main.obj:错误 LNK2019:函数 _main 中引用的未解析外部符号 _agclose 1>main.obj:错误 LNK2019:函数 _main 中引用的未解析外部符号 _gvFreeLayout 1>main.obj:错误 LNK2019:函数 _main 中引用的未解析外部符号 _gvRenderJobs 1>main.obj:错误 LNK2019:函数 _main 中引用的未解析的外部符号 _gvLayoutJobs 1>main.obj:错误 LNK2019:函数 _main 中引用的未解析外部符号 _agsafeset 1>main.obj:错误 LNK2019:函数 _main 中引用的未解析外部符号 _agege 1>main.obj:错误 LNK2019:函数 _main 中引用的未解析外部符号 _agnode 1>main.obj:错误 LNK2019:函数 _main 中引用的未解析的外部符号 _agopen 1>main.obj:错误 LNK2019:函数 _main 中引用的未解析的外部符号 _gvParseArgs 1>main.obj:错误 LNK2019:函数 _main 中引用的未解析的外部符号 _gvContext

在我拥有的 VC++ 目录中

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

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

非常感谢任何帮助以帮助使其正常工作。谢谢。

【问题讨论】:

    标签: c++ dll visual-studio-2010 linker graphviz


    【解决方案1】:

    在附加库输入下,您必须添加 graphviz 导入库,无论它叫什么,都在您添加路径的 lib 目录中。也许是graphviz.lib?

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我刚刚添加了这些,现在错误消失并成功编译,但是当我尝试运行程序时出现以下错误:“程序无法启动,因为缺少 graph.dll从您的计算机上。尝试重新安装程序以解决此问题。”我通过其他依赖项链接了 graph.dll,所以我真的不知道还能做什么。
      • @DistortedLojik 您可能已经通过附加依赖项而不是 graph.dll 添加了 graph.lib/graphviz.lib - 这是链接器的信息。操作系统找不到graph.dll,所以将graph.dll放在操作系统可以找到它的地方,比如系统目录(即我的32位XP上的C:/Windows/System32)[参见这里msdn.microsoft.com/en-us/library/ms682586%28VS.85%29.aspx关于Windows dll搜索顺序]。
      • graph.dll 文件只需要在PATH 变量中或包含exe 的目录中即可。
      猜你喜欢
      • 2018-11-21
      • 2016-10-15
      • 2011-07-28
      • 1970-01-01
      • 2012-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多