我试图在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论坛,所以我希望这里的某些人可能有一些建议。到目前为止,我已经尝试过 -
的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));
}
答案 0 :(得分:0)
警告可能是由于缺少运行时依赖性pango
库引起的。您可以尝试为您的mingw设置安装相应的pango
或pangocairo
包,看看是否能解决问题。
让我知道这是否有效!
答案 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
对不起,不好意思。