2017-08-21 32 views
7

WindowsのCLionからgraphvizをライブラリとして実行しようとしています。これまでにはかなり時間がかかりましたが、これが最終的なハードルであることを願っています。私はプログラムを実行すると、私は私がツールチェーンとしてMinGWの3.22とCLionを実行している次の警告なしグラフGraphviz - gvplugin_pango.dllを読み込めませんでした

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

を参照してください。 CmakeListsとmain.cは以下の通りです。残念ながら、私はgraphvizフォーラムにサインアップできないので、ここに誰かがいくつか提案してくれることを願っています。これまでのところ、私が試してみた -

  • は、インストールとGraphVizを、旧バージョンのインストールmingwの-64
  • を使用してcmakelists.txt
  • でgvplugin_pangoライブラリ変更など
  • (2.28を、現在は2.38です)みんなへのフルアクセスを許可するGraphvizのフォルダのアクセス権、テストドット-cと
  • 正常に動作しますがGVBINDIRのENV変数は明示的に
  • はCmakelists.txtでM32(ない100%を設定しようとしました2.38のインストールを指すように設定してください私は
    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

    )正しく

をこれをした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)); 
    } 

答えて

0

警告が欠落しているランタイムの依存関係が原因である可能性があり、pangoライブラリ。 mingwのセットアップに適切なpangoまたはpangocairoパッケージをインストールして、問題が解決するかどうか確認することができます。

それが機能するかどうかを教えてください。

+0

mingwのインストールマネージャでpangoライブラリを見つけることができませんでした。探しているはずの他の場所がありますか? – SMC

-1

私はmingw32に精通していませんが、gvplugin_pango.dllとその依存関係がロード可能かどうかを判断する必要があるようです。あなたがこれを行うには、ユーティリティを使用するUnixでは

が、何の「LDD」または「コマンドotool」(本当に?)mingwの中でこれを支援する

を以下のstackoverflowの記事は文字通りのためのライブラリをgrepを示唆しているがありません表示されます2015年からこのユーティリティへ Finding DLLs required of a Win exe on Linux (cross-compiled with mingw)?

その記事のポイント:https://github.com/gsauthof/pe-util と「依存関係ウォーカー」のトラブルのためhttp://www.dependencywalker.com

申し訳ありませんと呼ばれる手の込んだものがあります。

+0

*本当に*、この質問に関してLinux/Unixと関係がありますか? Linux/Unixで移植可能な実行可能ファイルの依存関係を読み取るためのストックユーティリティ/プログラムがあるべきですか?私はあなたの驚きに驚いています... Dependency Walkerは、実行可能なすべての依存関係を読み込むWindowsプログラムです。それは非常に古いですが、それはまだかなりよく保持しています。 –

関連する問題