【发布时间】:2020-01-25 15:24:15
【问题描述】:
我正在就 Graphviz 库与您联系。我在使用 graphviz 作为 c++ 代码中的库和 Windows 上的 qt creator 时发现了一个错误。
基于Documentation的示例,我使用以下函数将点文件转换为png文件:
bool saveImageGV(){
GVC_t *gvc= gvContext();
gvAddLibrary(gvc, &gvplugin_dot_layout_LTX_library);
gvAddLibrary(gvc, &gvplugin_core_LTX_library);
gvAddLibrary(gvc, &gvplugin_gd_LTX_library);
FILE *fp = fopen((pathTmp + ".dot").c_str(), "r");
Agraph_t *g = agread(fp,0);
gvLayout(gvc, g, "dot");
FILE *fp2 = fopen((pathTmp + ".png").c_str(), "w");
gvRender(gvc, g, "png", fp2);
gvFreeLayout(gvc, g);
agclose(g); fclose(fp); fclose(fp2);
return (gvFreeContext(gvc));
}
似乎在 linux 上,此功能与 graphviz 2.30 配合得很好,我成功地将我的 dot 文件转换为 png 文件。 但是,当我使用 Windows 库时,我遇到了具有相同功能的分段错误。 我的调查让我认为问题可能来自 .dll 库,因为在 linux 上,它适用于 2.30 版本,但不适用于 2.38 版本的库。在windows下,2.30和2.38会导致同样的segmentation fault错误。
这是一个众所周知的错误,它是否存在另一种在 Windows 上将点文件转换为 png 文件的方法?我从“Graphviz2.38\lib\release\lib”文件夹中链接库,并从“Graphviz2.38\lib\release\dll”文件夹中获取dll。
如果您需要更多信息,我提前感谢您的回复。
【问题讨论】:
标签: c++ c++11 qt-creator graphviz dynamic-library