2017-08-21 19 views
7

Windows'ta CLion'dan bir kitaplık olarak graphviz çalıştırmaya çalışıyorum. Bu kadar uzağa ulaşmak beni epey bir zaman aldı ve umarım bu son engeldir. Ben Programı çalıştırdığınızda aşağıdaki uyarıyı ve hiçbir grafiğiniGraphviz - gvplugin_pango.dll yüklenemedi

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

Ben toolchain gibi MinGW 3.22 ile CLION koşuyorum görüyoruz. CmakeLists ve main.c aşağıdadır. Maalesef, grafik forumları için kaydolamıyorum, bu yüzden burada birilerinin bazı önerileri olabileceğini umuyorum. Şimdiye kadar denedim -

  • Yükleme ve GraphViz eski bir sürümünü yükleme mingw-64
  • kullanarak cmakelists.txt
  • yılında gvplugin_pango kütüphanesinde değiştirilmesi dahil
  • (2.28, akım 2.38 olduğunu) Graphviz klasörün izinler Herkes tam erişimi test nokta -c izin ve açıkça 2.38 yüklemesine işaret edecek GVBINDIR env değişkeni Set
  • çalışıyor etmek
  • Cmakelists.txt (% 100 içinde
  • çalıştı ayar m32 Ben
    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}) 
    

    CmakeLists.txt

    ) düzgün

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

cevap

0

uyarı eksik bir çalışma zamanı içmekten kaynaklanıyor olabilir, pango kütüphanesi. Sorunun çözülüp çözülmediğini görmek için mingw kurulumunuz için uygun pango veya pangocairo paketini yüklemeyi deneyebilirsiniz.

Bu işe yararsa bana bildirin!

+0

Mingw kurulum yöneticisinde pango kütüphanesi bulamadım, bakmam gereken başka bir yer var mı? – SMC

-1

Mingw32 veya büyük bir hayranı ile aşina değilim, ama gvplugin_pango.dll ve bağımlılıkları yüklenebilir olduğunu belirlemek gerekir. Bunu yapmak için bir yardımcı program kullanırsınız Unix'de

ama hiç "ldd" ya da "otool" (gerçekten mi?) MinGW bu konuda yardım etmek

aşağıdaki stackoverflow makale anlamıyla kütüphaneleri grepping önerir var görünür 2015 den bu yardımcı programı için Finding DLLs required of a Win exe on Linux (cross-compiled with mingw)?

O makale puan: https://github.com/gsauthof/pe-util ve "Bağımlılık Walker" bela http://www.dependencywalker.com

Maalesef denilen süslü bir şey var.

+0

* Gerçekten, Linux/Unix'in bu soruyla ne ilgisi var? Linux/Unix'te taşınabilir çalıştırılabilir bağımlılıkları okumak için neden bir stok programı/programı bulunmalıdır? Sürprizle şaşırdım ... Dependency Walker, tüm taşınabilir çalıştırılabilir bağımlılıkları okuyan bir Windows programıdır; Çok eski ama yine de oldukça iyi. –