问题描述
我有一个应用程序可以生成一个 dependencies.dot
文件,然后我想将其转换为 SVG 图像。
当我从一个简单的应用程序中这样做时:
int main(int argc,char * argv[])
{
system("dot -Tsvg ../BUILD/dependencies.dot > ../BUILD/dependencies.svg");
return 0;
}
效果很好。 SVG 图像存在并且可以正常工作。
当我从 Qt 应用程序运行它时,SVG 文件被创建,但它仍然是空的。
知道什么会阻止 dot
将数据输出到它的 stdout
吗?
为了以防万一,我还尝试使用 cat
通过 stdin
而不是文件名发送输入:
system("cat ../BUILD/dependencies.dot | dot -Tsvg > ../BUILD/dependencies.svg");
这没有任何区别。
同样使用完整路径 (/usr/bin/dot
) 也无济于事。
另一个测试,我尝试使用 popen()
并且第一个 fread()
立即返回 0(即 EOF 的标记)。
它可能不是 Qt,但某些东西正在与 dot
做任何事情的能力相互作用。关于为什么会很棒的任何指示。
也许是一个重要的笔记?我启动我的应用程序。从控制台,所以 stdin
、stdout
和 stderr
都应该按预期工作。我实际上可以看到调试日志出现在那里,其他应用程序似乎按预期工作(例如,我的 Qt 应用程序可以成功运行 make
)。
以下是生成的 SVG 示例(当我不在 Qt 应用程序中运行它时):
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)