2017-08-21 6 views
7

Ich versuche, Graphviz als eine Bibliothek von CLion in Windows zu starten. Ich habe eine ganze Weile gebraucht, um so weit zu kommen, und ich hoffe, das ist die letzte Hürde. Wenn ich das Programm laufen sehe ich die folgende Warnung und kein DiagrammGraphviz - Konnte nicht laden gvplugin_pango.dll

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

Ich CLION mit MinGW 3.22 als Werkzeugkette läuft. CmakeLists und main.c sind unten. Leider kann ich mich nicht für graphviz-Foren anmelden, daher hoffe ich, dass jemand hier Vorschläge hat. Bisher habe ich versucht -

  • Installation und Verwendung mingw-64
  • Installation eine ältere Version von GraphViz (2,28, Strom 2,38)
  • Einschließlich der gvplugin_pango Bibliothek in CMakeLists.txt
  • ändern Berechtigungen für Graphviz Ordner vollen Zugriff auf Jeder, getestet Punkt -c zu ermöglichen und arbeitet die GVBINDIR env Variable setzen
  • fein auf die 2,38-Installation weisen ausdrücklich darauf auf
  • Versuchte Einstellung m32 in CMakeLists.txt (nicht zu 100% Ich tat dies richtig)

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

Antwort

0

Die Warnung könnte durch eine fehlende Laufzeitabhängigkeit verursacht werden, die pango Bibliothek. Sie könnten versuchen, das entsprechende pango oder pangocairo Paket für Ihr Mingw-Setup zu installieren, um zu sehen, ob das das Problem löst.

Lassen Sie mich wissen, ob das funktioniert!

+0

Ich konnte keine Pango-Bibliothek im Mingw-Installationsmanager finden, wo sollte ich sonst hinschauen? – SMC

-1

Ich bin nicht vertraut mit Mingw32, oder ein großer Fan davon, aber es scheint, müssen Sie feststellen, dass gvplugin_pango.dll und seine Abhängigkeiten ladbar sind.

In Unix Sie ein Dienstprogramm, dies zu tun verwenden würden, aber es scheint, gibt es keine „LDD“ oder „otool“ ist mit diesem in mingw (wirklich?) Zu helfen

Die folgenden Stackoverflow Artikel schlagen vor, für die Bibliotheken buchstäblich greppen Finding DLLs required of a Win exe on Linux (cross-compiled with mingw)?

Dass Artikel weist auf dieses Programm von 2015: https://github.com/gsauthof/pe-util und es ist etwas schicker als "Dependency Walker" http://www.dependencywalker.com

Sorry für die Mühe.

+0

* Wirklich *, was hat Linux/Unix mit dieser Frage zu tun? Warum sollte es ein Lagerprogramm/-programm geben, um portable ausführbare Abhängigkeiten unter Linux/Unix zu lesen? Ich bin überrascht von Ihrer Überraschung ... Dependency Walker ist ein Windows-Programm, das alle tragbaren ausführbaren Abhängigkeiten liest; es ist sehr alt, aber es hält immer noch ziemlich gut. –

Verwandte Themen