我正在尝试在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文件夹的权限,允许Everyone完全访问,并测试dot -c可以正常工作
- 将GVBINDIR环境变量设置为明确指向2.38安装
- 尝试在Cmakelists.txt中设置m32(不敢肯定我是否做对了)
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));
}