Graphviz - 无法加载gvplugin_pango.dll

时间:2017-08-21 00:59:31

标签: mingw graphviz clion pango

我试图在Windows中从CLion运行graphviz作为库。我花了很长时间才走到这一步,我希望这是最后的障碍。当我运行程序时,我看到以下警告,没有图表

Warning: Could not load "C:\Program Files (x86)\Graphviz2.38\bin\gvplugin_pango.dll" - can't open the module

我使用MinGW 3.22作为工具链运行CLion。 CmakeLists和main.c如下。不幸的是,我无法注册graphviz论坛,所以我希望这里的某些人可能有一些建议。到目前为止,我已经尝试过 -

  • 安装和使用mingw-64
  • 安装旧版GraphViz(2.28,当前为2.38)
  • 在cmakelists.txt
  • 中包含gvplugin_pango库
  • 更改Graphviz文件夹的权限,以允许对所有人进行完全访问,测试点-c并且正常工作
  • 将GVBINDIR env变量设置为明确指向2.38安装
  • 尝试在Cmakelists.txt中设置m32(不是100%我正确地做了这个)

的CMakeLists.txt

cmake_minimum_required(VERSION 3.6)
project(Learning)

set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}")
set(GRAPHVIZ_INCLUDE_DIR "C:/Program Files (x86)/Graphviz2.38/include/graphviz")
set(GRAPHVIZ_LIB_DIR "C:/Program Files (x86)/Graphviz2.38/lib/release/lib")

set(SOURCE_FILES main.c)
include_directories("${GRAPHVIZ_INCLUDE_DIR}")
add_executable(Learning ${SOURCE_FILES})

find_library(CGRAPH_LIBRARY cgraph HINTS "${GRAPHVIZ_LIB_DIR}" REQUIRED)
find_library(GVC_LIBRARY gvc HINTS "${GRAPHVIZ_LIB_DIR}" REQUIRED)
target_link_libraries( Learning ${CGRAPH_LIBRARY} ${GVC_LIBRARY} )

MAIN.C

#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <gvc.h>
#include <cgraph.h>

int main() {
    Agraph_t *graph;
    Agnode_t *nodeA, *nodeB;
    Agedge_t *edge1;
    Agsym_t *symbol1;
    GVC_t *gvc;

    gvc = gvContext();
    graph = agopen( "graph", Agdirected, NULL);
    nodeA = agnode(graph, "nodeA", 1);
    nodeB = agnode(graph, "nodeB", 1);
    edge1 = agedge(graph, nodeA, nodeB, 0, 1);
    printf("debug");

    agsafeset(nodeA, "color", "red", "");
    gvLayout(gvc, graph, "dot");
    gvRender(gvc, graph, "dot", NULL);
    agclose(graph);
    return ( gvFreeContext(gvc));
    }

2 个答案:

答案 0 :(得分:0)

警告可能是由于缺少运行时依赖性pango库引起的。您可以尝试为您的mingw设置安装相应的pangopangocairo包,看看是否能解决问题。

让我知道这是否有效!

答案 1 :(得分:-1)

我不熟悉mingw32,或者它的忠实粉丝,但似乎你需要确定gvplugin_pango.dll及其依赖项是否可加载。

在Unix中你会使用一个实用程序来执行此操作,但它似乎没有&#34; ldd&#34;或&#34; otool&#34;在mingw中帮助解决这个问题(真的吗?)

以下stackoverflow文章建议逐字地为库提供grepping Finding DLLs required of a Win exe on Linux (cross-compiled with mingw)?

该文章从2015年开始指出这个实用程序:https://github.com/gsauthof/pe-util 并且有一些名为&#34; Dependency Walker&#34; http://www.dependencywalker.com

对不起,不好意思。